Python 读写文件
Python 读写文件
读文件
打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的):
f = open('test.txt', 'r')
r表示是文本文件,rb是二进制文件。(这个mode参数默认值就是r)
如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在:
f=open(‘test.txt’, ‘r’)
Traceback (most recent call last):
File “”, line 1, in
FileNotFoundError: [Errno 2] No such file or directory: ‘test.txt’
文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的
f.close()
由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:
try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:
with open('/path/to/file', 'r') as f:
print(f.read())
python文件对象提供了三个"读"方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量。
read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for … in … 结构进行处理。
readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。
注意:这三种方法是把每行末尾的’\n’也读进来了,它并不会默认的把’\n’去掉,需要我们手动去掉。
In[2]: with open(‘test1.txt’, ‘r’) as f1:
list1 = f1.readlines()
In[3]: list1
Out[3]: [‘111\n’, ‘222\n’, ‘333\n’, ‘444\n’, ‘555\n’, ‘666\n’]
去掉’\n’
In[4]: with open(‘test1.txt’, ‘r’) as f1:
list1 = f1.readlines()
for i in range(0, len(list1)):