使用关键字with 时,open() 返回的文件对象只在with 代码块内可用。如果要在with 代码块外访问文件的内容,可在with 代码块内将文件的各行存储在一个列表中,并
在with 代码块外使用该列表:你可以立即处理文件的各个部分,也可推迟到程序后面再处理。 下面的示例在with 代码块中将文件pi_digits.txt的各行存储在一个列表中,再在with 代码块外打印它们:
filename = '/etc/passwd'
with open(filename) as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
if ":" in line:
print line.split(":")[-1].rstrip()#用:分割,取最后一个,得到shell
处的方法readlines() 从文件中读取每一行,并将其存储在一个列表中;接下来,该列表被存储到变量lines 中;在with 代码块外,我们依然可以使用这个变量。在❷ 处,我们使用一个简单的for 循环来打印lines 中的各行。由于列表lines 的每个元素都对应于文件中的一行,因此输出与文件内容完全一致。
屏幕快照 2017-10-26 下午9.21.56.png