读写文件是最常见的 IO 操作。我们经常从文件读取输入,将内容写到文件。
读文件
在 Python 中,读文件主要分为三个步骤:
打开文件
读取内容
关闭文件
一般使用形式如下:
try:
f = open('/path/to/file', 'r') # 打开文件
data = f.read() # 读取文件内容
finally:
if f:
f.close() # 确保文件被关闭
注意到,我们在代码中加了 try…finally,这是因为,如果打开和读取文件时出现错误,文件就没有被关闭。为了确保在任何情况下,文件都能被关闭,我们加了 try…finally。
上面的代码中,‘r’ 模式表示读模式,open 函数的常用模式主要有:
‘r' 读模式
‘w' 写模式
‘a' 追加模式
‘b' 二进制模式(可添加到其他模式中使用)
‘+' 读/写模式(可添加到其他模式中使用)
上面的读文件做法很繁琐,我们可以使用 Python 的 with 语句来帮我们自动调用 close 方法:
with open('/path/to/file', 'r') as f:
data = f.read()
可以看到,这种方式很简洁,而且还能在出现异常的情况下自动关闭文件。
强烈推荐。
通常而言,读取文件有以下几种方式:
一次性读取所有内容,使用 read() 或 readlines();
按字节读取,使用 read(size);
按行读取,使用 readline();
读取所有内容
读取所有内容可以使用 read() 或 readlines()。我们在上面已经介绍过 read() 了,现在,让我们看看 readlines()。
readlines() 方法会把文件读入一个字符串列表,在列表中每个字符串就是一行。
假设有一个文件 data.txt,它的文件内容如下(数字之间的间隔符是’\t’):
10 1 9 9
6 3 2 8
20 10 3 23
1 4 1 10
10 8 6 3
10 2 1 6
我们使用 readlines() 将文件读入一个字符串列表:
with open('data.txt', 'r') as f:
lines = f.readlines()
line_num = len(lines)
print lines
print line_num
执行结果:
['10\t1\t9\t9\n', '6\t3\t2\t8\n', '20\t10\t3\t23\n', '1\t4\t1\t10\n', '10\t8\t6\t3\n', '10\t2\t1\t6']
6
可以看到,列表中的每个元素都是一个字符串,刚好对应文件中的每一行。 |