打开文件:open(name[,mode[,buffering]]),返回一个文件对象,模式(mode)和缓冲(buffering)是两个可选参数。
假设有一个名为somefile.txt的文件,存储路径为c:\text,打开方式如下:f = open(r'C:\text\somefile.txt')
mode参数:如果open函数只带一个文件名参数,可以获得能读取文件内容的文件对象,如果要进行写操作,则必须要提供一个模式操作显式声明。
值 | 描述 |
'r' | 读模式 |
'w' | 写模式 |
'a' | 追加模式 |
'b' | 二进制模式(可添加到其他模式中使用) |
'+' | 读/写模式(可添加到其他模式中使用) |
'r+'参数可以在一个文件读写时使用
'rb'参数可以读取一个二进制文件
buffering函数:控制文件的缓冲,如果是0或者False,则I/O操作是无缓冲的(直接对硬盘进行操作),是1或者True则I/O操作针对内存,在进行flush或者close时才更新硬盘上的数据,大于1的数字代表缓冲区大小(字节),为负数表示使用默认缓冲区大小。
基本文件方法:文件或流最重要的能力是提供或接收数据。
>>> f2 = open('F:\Python.txt')
>>> f2.read()
'hello worldhi'
>>> f3 = open('F:\Python.txt','a')
>>> f3.write('\nPython')
7
>>> f3.close()
>>> f2.read()
'\nPython'
>>> f2.close()
read方法可以指定读取个数。
使用writelines(list)对文件进行修改:
f = open('F:\Python.txt')
lines = f.readlines()
f.close()
lines[1] = 'bye bye'
f2 = open('F:\Python.txt','w')
f2.writelines(lines)
关闭文件:
- 使用try/finally语句,在finally语句中调用close方法;
- with语句,打开文件并将其赋值到变量上,文件在语句结束时自动关闭,即使是由于异常引起的结束也是如此。
with open('file.txt') as file1:
do_something(somefile)
上下文管理器:是一种支持__exit__和__enter__两个方法的对象,__enter__方法不带参数,在进入with语句块的时候被调用;__exit__方法有三个参数:异常类型、异常对象和异常回溯,在离开方法(带有通过参数处理的、可引发的异常)时这个函数被调用,如果__exit__返回false,那么所有异常都不会被处理。
文件可以用作上下文处理器,__exit__关闭文件,__enter__返回文件对象本身。
文件对象是一个可迭代对象,对于大文件的读取,可以使用如下方法:
f = open('F:\Python.txt')
for x in f:
print(x)
f.close()
或者直接对文件进行迭代,不使用变量存储文件对象:
for line in open('F:\Python.txt'):
print(line)
line1,line2 = open('F:\Python.txt')
print(line1)
print(line2)
lines = list(open('F:\Python.txt'))
print(lines)