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
 
posted @ 2018-11-06 20:00  sbj123456789  阅读(181)  评论(0编辑  收藏  举报