python之文件I/O
file = open(path_in, mode='r', encoding='UTF-8', ... ... ) #打开文件,返回file对象
file.close() #关闭文件
file.read([size]) #读取指定字节数
file.readline([size]) #读取整行,包括“\n”字符
file.readlines([sizeint]) #读取所有行并返回列表
file.write(str) #将字符串写入文件
file.writelines(sequence) #向文件写入一个序列字符串列表(换行需自己加入换行符)
例如:
with open (path_in, 'r', encoding='UTF-8') as f:
for line in f.readlines():
line = line.split()
head = line[0]
用numpy也可以直接读入为numpy.array:
X = np.genfromtxt(file name, delimiter=’ ’)
除了以上 Python 自带的默认文件读写方式,还有其他两种方式:pickle 和 json
两种方式的接口类似:
pickle.dump(obj, file) # 将 obj 以二进制写入 file 中
b = pickle.dumps(obj) # 将 obj 封存到 bytes 类型的 b 中
json.dump(obj, file) # 将 obj 以 json格式的字符串 写入到 file 中
s = json.dumps(obj) # 将 obj 以json格式封存到的字符串 s 中
三种方式比较:
pickle:
- 二进制的方式保存,文件不方便阅读
- 只能用 Python 语言读取
- 支持 Python 自定义类
json:
- string 的方式保存,文件方便直接阅读
- 可以跨语言操作
- 只能封装 Python 内置类型变量,不支持自定义类
Python 自带I/O:
- string 方式保存,方便直接阅读
- 需要将所有类型转化为 string 再进行保存,适用于较为简单的数据格式
- 不支持自定义类
参考:
http://www.runoob.com/python/file-methods.html
https://docs.python.org/zh-cn/3/library/pickle.html
https://docs.python.org/3/library/json.html