8979323846
2643383279
为何会出现这些空白行呢? 因为在这个文件中, 每行的末尾都有一个看
不见的换行符, 而print 语句也会加上一个换行符, 因此每行末尾都有两个换
行符: 一个来自文件, 另一个来自print 语句。 要消除这些多余的空白行, 可
在print 语句中使用rstrip() :
filename = 'pi_digits.txt'
with open(filename) as file_object:
for line in file_object:
print(line.rstrip())
现在, 输出又与文件内容完全相同了:
3.1415926535
8979323846
2643383279
1.4 创建一个包含文件各行内容的列表
使用关键字with 时, open() 返回的文件对象只在with 代码块内可用。
如果要在with 代码块外访问文件的内容, 可在with 代码块内将文件的各行存
储在一个列表中, 并在with 代码块外使用该列表: 你可以立即处理文件的各
个部分, 也可推迟到程序后面再处理。
下面的示例在with 代码块中将文件pi_digits.txt的各行存储在一个列表
中, 再在with 代码块外打印它们:
filename = 'pi_digits.txt'
with open(filename) as file_object:
❶ lines = file_object.readlines()
❷ for line in lines:
print(line.rstrip())
❶处的方法readlines() 从文件中读取每一行, 并将其存储在一个列表中;
接下来, 该列表被存储到变量lines 中; 在with 代码块外, 我们依然可以使用
这个变量。 在❷处, 我们使用一个简单的for 循环来打印lines 中的各行。 由
于列表lines 的每个元素都对应于文件中的一行, 因此输出与文件内容完全一
致。
1.5 使用文件的内容
将文件读取到内存中后, 就可以以任何方式使用这些数据了。 下面以简
单的方式使用圆周率的值。 首先, 我们将创建一个字符串, 它包含文件中存
储的所有数字, 且没有任何空格:
pi_string.py
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
❶ pi_string = ''
❷ for line in lines:
pi_string += line.rstrip()
❸ print(pi_string)
print(len(pi_string))