open
f = open('filename','r') # 读模式 f = open('filename','w') # 写模式 f = open('filename','a') # 追加模式
注:rb 是以二进制读取
现在你觉得没用对吧,我也这么觉得。。。
but
在以后用到socket的时候,传输文件,读取和写入用的都是二进制形式
rb和wb可以更快速的进行文件的传输
读取内容方式
f.read() # 一次读取整个文件,文件大不适用
f.readline() # 一次只读取一行,占内存小,速度慢
f.readlines() # 一次性读取,将内容分析成一个行的列表,可以由for...in...处理
写文件方式
f.write(content) # 不会换行哦
f.writeline(content) # 下次会写在下一行
close
f.close()
示例:
f = open('cdays-4-test.txt', 'r') #以读方式打开文件 result = list() for line in f.readlines(): #依次读取每行 line = line.strip() #去掉每行头尾空白 if not len(line) or line.startswith('#'): #判断是否是空行或注释行 continue #是的话,跳过不处理 result.append(line) #保存 result.sort() #排序结果 f.close() #关闭文件 with open('new_file.txt','w') as fw: #with方式不需要再进行close fw.write('%s' % ' '.join(result)) #保存入结果文件
PS:在做网络抓取的时候,有可能会报:UnicodeEncodeError: 'gbk' codec can't encode character 'xa9' in position 1028898: illegal multibyte sequence
这个错误是因为系统的编码格式和抓出来的字符串的编码格式不一致导致的,解决方案如下:
fw = open("D:\test.html","w",encoding='utf-8')
假设说抓取到的字符串编码格式是utf-8,本机编码格式是gbk,那么在打开(注意是打开)文件的时候要设定一下编码格式哦。