一、读
1.open打开文件,文件信息到内存需要由unicode->utf-8(默认)
file=, mode=, encoding= 可以省略不写,r 是只读
例子:
f = open(file="将进酒", mode=‘r‘, encoding=‘utf-8‘) data = f.read() print(data)
f.close()
结果:
2.读取二进制,即bytes,不进行编码
mode=‘rb‘
例子1:
f = open(file="将进酒", mode=‘rb‘) data = f.read() print(data)
f.close()
结果:
例子2:
需要将bytes->str,解码
f = open(file="将进酒", mode=‘rb‘) data = f.read() new_data = data.decode(‘utf-8‘) print(new_data)
f.close()
结果:
3.探索编码
1)安装chardet
点击pycharm的settings
点击‘+‘按钮,在搜索框中搜索,大年纪‘Install Package’(我已经安装过了所以是灰的)
2)例子
import chardet f = open(file="将进酒", mode=‘rb‘) data = f.read() det = chardet.detect(data) print(det)
f.close()
结果:
二、写
1.mode=‘w‘, 像Linux的清空写入(>)
例子:
f = open(file="将进酒", mode=‘w‘, encoding=‘utf-8‘) f.write("李白") f.close()
结果:
2.写模式也有‘wb‘,这里就不加赘述
三、追加
1.mode=‘a‘,相当于Linux的追加写入
例子
f = open(file="将进酒", mode=‘a‘, encoding=‘utf-8‘) f.write("将进酒") f.close()
结果
2.当然追加模式也有‘ab‘,这里也不加赘述
四、混合操作
1.mode= ‘r+’
f = open(file="将进酒", mode=‘r+‘, encoding=‘utf-8‘) data = f.read() print(data) f.write("将进酒") f.close()
2.结果
解释:f.read(),光标移到f内容的最后面,即"李白将进酒|",
f.write()在光标后书写内容
2.还有一种mode=‘w+‘,写读模式,不大常用,就不写了
五、常用方法
1.tell()
告诉你光标当前的位置(根据字节)
例子:
f = open(file="将进酒", mode=‘r+‘, encoding=‘utf-8‘) data = f.read() print(data) a = f.tell() print(a) f.close()
结果:
解释:utf-8,中文一个字符对应三个字节
2.seek()
将光标移到,你想要去的位置(注意字符与字节的关系)
例子:
f = open(file="将进酒", mode=‘r+‘, encoding=‘utf-8‘) data = f.read() print(data) a = f.tell() # 获取当前光标的位置 print(a) b = f.seek(12) # 设置当前光标的位置 print(b) c = f.tell() # 获取当前光标的位置 print(c) f.close()
结果:
3.readline()
1)循环读取
例子
f = open(file="将进酒", mode=‘r+‘, encoding=‘utf-8‘) # data = f.read() # print("Content:", data) # f.write("\n李白1") # f.write("\n李白2") # f.write("\n李白3") # f.seek(0) # new_data = f.read() # print("Content:", new_data) f.seek(0) for i in f: print(i) f.close()
结果:
2)命令
例子:
f = open(file="将进酒", mode=‘r+‘, encoding=‘utf-8‘) # data = f.read() # print("Content:", data) # f.write("\n李白1") # f.write("\n李白2") # f.write("\n李白3") # f.seek(0) # new_data = f.read() # print("Content:", new_data) f.seek(0) a = f.readline() print(a) f.close()
结果:
六、文件存储方法
原文:https://www.cnblogs.com/wt7018/p/10770006.html