Python f.read()在首次使用后发生变化

时间:2015-09-02 01:43:50

标签: python unicode file-handling

当我在python中打开一个文本文件来读取它时,我第一次调用f.read()它工作正常但任何后续调用都会返回一个空字符串('')。即使在一行中再次使用它也会将其更改为空白字符串。

我正在阅读的文字是0到128之间的unicode字符的随机集合,如果有帮助的话。

例如:

>>> f = open("Data.txt")
>>> f.read() 
'$$$\x00\x00\x11$$$'
>>> f.read() 
''
>>> f.close()

造成这种情况的原因是什么?如何解决?

1 个答案:

答案 0 :(得分:1)

实际上是预期的行为,并记录在the official documentation

  

...

     

如果文件的结尾已经存在   到达时,f.read()将返回一个空字符串(“”)。

它明确地给出了与你相同的例子:

>>> f.read()
'This is the entire file.\n'
>>> f.read()
''

您可以通过调用seek()重置文件指针:

file.seek(0)

所以,在你的情况下,它将是:

>>> f = open("Data.txt")
>>> f.read() 
'$$$\x00\x00\x11$$$'
>>> f.read() 
''
>>> f.seek(0) # move the pointer to the beginning of the file again
>>> f.read() 
'$$$\x00\x00\x11$$$'
>>> f.close()