对如何打开'感到困惑。函数在Python中工作

时间:2017-03-19 21:11:44

标签: python python-3.x

说我有代码:

 file = open('items.txt', 'r')
 print(file.read())

这很好,只打印整个文本文件,但是:

 file = open('items.txt', 'r')
 for line in file:
     print(line)
 print(file.read())

所以它会运行for循环就好并打印行,但最后一行不会做任何事情。使用第二个代码,它应该打印整个文件两次,但它只打印一次。有人能解释一下原因吗?

2 个答案:

答案 0 :(得分:8)

完成在for循环中读取文件后,光标将设置为文件末尾。

试试这个例子:

file = open('items.txt', 'r')
 for line in file:
     print(line)

file.seek(0, 0)
print(file.read())

这次将打印整个文件两次,因为我们将光标设置为文件的开头。

答案 1 :(得分:2)

  

使用第二个代码,它应该打印整个文件两次,但它   只打印一次

它只打印一次文件,因为for循环将读取整个文件。 file实际上引用了文件中的位置,该位置在您浏览文件时会发生变化。因此,当您遍历所有内容时,file引用文件的末尾。如果您在迭代完文件后尝试读取所有内容(使用file.read()),则不会收到任何内容,因为您已经在最后。

如果你这样做,你会有同样的行为

file = open('items.txt', 'r')
print(file.read())
print(file.read())

您可以使用file.seek(0, 0)导航到文件的开头。

请参阅:https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects