2.1 Python文件操作

读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。

读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

2.1.1 文件操作基本格式

你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。基本格式如下

f = codecs.open('filename', 'mode')
f.read()
f.write()
f.close()
mode 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

2.1.2 文件操作的方法

  • flush()
    将缓冲区的内容,立刻写入到文件并清空缓冲区。一般情况是在关闭文件的时候将内容从缓冲区清空,在不使用 close 方法的时候,flush 可以将文件写入到文件。
f = open('filename','wb')
f.flush()
f.close()
  • readlins()
    读取所有行,每行都处理成字符串,并返回一个列表。

    注: 执行之后,光标位置移动到文件末尾,再次读取的时候,会返回一个空列表

f = open('filename','rb')
text = f.readlines()
print(text[0,1])  # 打印返回列表的前两个元素
f.close()
  • readline()
    从文件中读取 1 行,并且光标移动到下一行。
f = open('filename', 'rb')
print('文件名为: ', f.name)

text = f.readline()
print('读取的字符串是: %s' %(text))
print('读取的字符串是: %s' %(text))
print('读取的字符串是: %s' %(text))

fs.close()
  • seek()
    移动文件读取的指针到制定位置,即移动光标所在位置
f.seek(offset[, where])

注: 在文件中移动文件指针,从 where(0 代表文件起始位置,1 代表当前位置,2代表文件末尾)偏移 offset 个字节

  • tell()
    返回当前指针在文件中的位置, 一般配合 seek 一起使用
f.tell(offset[, where])

推荐阅读更多精彩内容