作者回复: 这里有两个问题导致报错,第一个报错的原因是在pycharm执行时有可能使用了python2解释器,因为pycharm可以支持多个解释器的。可以在界面下方运行结果上面查看正在使用的解释器。 第二个问题是你在打开文件open()时使用了b参数,在后面对文件写入的时候就必须为f传入一个byte字节类型,而'你好'是string字符串类型,必须使用encode()函数转换成byte类型,write()函数才能接收。
作者回复: 内置模块如果需要了解用法可以使用help(open)或者官方文档来查看,因为大部分内置模块并非使用python编写的,而是C语言编写,这里的pass当中它的一个声明,而不是实现即可。 至于使用C语言目的自然是为了提高效率,以Python3.7为例,如果希望了解它的实现可以下载Python源代码\Python-3.7.0\Modules\_io\_iomodule.c 文件包括了io的C语言实现 如果希望了解Python版本的实现可以参考Python-3.7.0\Python-3.7.0\Lib\_pyio.py 37行 def open(file, mode="r", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None): 但是还要注意的是里面的主要实现FileIO()依然用C语言实现的。 所以在这里不建议大家从最基础内建函数入手,因为会涉及底层C语言和更多的操作系统知识,不利于大家入门,容易打击积极性。 建议先掌握应用逻辑再回头重新掌握操作系统、网络基础、这样学习起来虽然总体时间增加,但是目的性明确。
作者回复: file3 = open('name.txt', 'a', encoding='utf-8') file3.write('|刘备') 打开文件之后要关闭 file3.close()
作者回复: help(file2.read) 可以发现read()会尽可能多的读取文件内容,文件指针会移动到结尾,第二个read不会返回文件开头所以没有读取到任何信息
作者回复: mode参数有"w"和“a”等多个参数,w表示写入,并先截断文件 a表示写入,如果文件存在则在末尾追加。 参考 https://docs.python.org/zh-cn/3.6/library/functions.html?highlight=open#open
作者回复: 系统的字符集和文件的字符集不匹配,输出出来就是乱码了,尝试搜索引擎搜索一下怎样改变输出的编码,看看能不能搞定你的问题
作者回复: 建议至少补充三点 1 linux的基本操作和操作系统原理,毕竟大部分服务端程序是运行在linux系统环境上的 2 常见的协议 如tcp http ,现在大部分的服务都是cs或bs结构,有必要了解协议的实现 3 根据工作的内容学习相关的知识,如从事web后端开发尝试了解web服务器相关知识,如从事前端开发尝试了解html css js等知识,从事图形开发则去了解gtk,从事深度学习了解tensorflow等等,根据不同工种积累该项工作的技术栈
作者回复: open('name.txt','r+') 打开的模式r+ 导致了最终结果和你期望不同
作者回复: 文件编码问题,help(open) 关注一下enconding参数
作者回复: 检查一下open() 打开文件的方式, 如果非binary方式,是不支持seek(2,1)这种用法的