首页 > 技术文章 > python 文件(file)操作

tjuyuan 2017-05-02 15:36 原文

操作文件的一般流程有:

打开文件、文件处理、关闭文件

 

开开文件的模式有:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【不可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
  • r+,可读写文件。【可读;可写】 不能创建,覆盖相同的字符写入
  • w+,写读。【文件不存在创建,存在先清空后写入】
  • a+,追加读写。【可读,追加写,默认光标在最后,读取可以用f.seek(0)移动到文件开头进行读取,但是写不能,写的时候光标会自动移动到最后面进行写】
 
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

 

基本操作:

f = open(filename, 'r', encording='utf-8')
first_line = f.readline()
rest_data = f.read()  # 读取剩下的所有内容,文件大时不要用
f.write('lastline')
f.close             # 关闭文件

所有操作:

f.readlines()   # 返回一个列表,列表的元素为每行的字符,包括换行符
f.tell()        # 返回当前光标所在的字符个数(从最前面开始)
f.seek(0)       # “光标” 跳转到文件开头
f.truncate(5)    # 截断操作,不管光标的当前位置,从文件开始位置数5个字符后去掉后面的字符,必须用r+权限
f.fileno()      # 文件标识符
f.read()        # 注意,不一定能全读回来
f.write(str)    # 写入字符串
f.readinto()    # 不要用
f.readall()     

f.readable()    # 是否可读
f.seekable()    # 光标是否可跳转
f.writeable()   # 是否可写
 
with 语句,为了避免打开文件后忘记关闭,可以通过管理上下文
with open(filename1, 'r', encoding='utf-8') as f1,
        open(filename2, 'w', encoding='utf-8') as f2,
        pass

 

循环文件内容:

# 循环文件,低效率,内存需要保留所有数据
for index, line in enumerate(f.readlines()):
    print(index,line)

# 循环文件,高效率, 内存只保留一行数据
for line in f
    print(line)

 

推荐阅读