【问题标题】:Why does the .read() command do different things when the output is saved in a variable当输出保存在变量中时,为什么 .read() 命令会做不同的事情
【发布时间】:2017-03-06 14:54:00
【问题描述】:

这是我在终端中所做的:

>>> file1 = open('file1.txt', 'r')
>>> file1.read()
    'Content 1'
>>> new_file1 = file1.read()
>>> print(new_file1)

为什么当我直接在 file1 上使用 .read() 命令时,我得到了文件的内容,但是当我尝试将输出 保存 到一个变量时,我得到一个空字符串?

【问题讨论】:

  • 您已经阅读了该文件。当您尝试阅读更多内容时,就没有更多可阅读的内容了。要么重置文件指针 (file1.seek(0)),要么关闭并重新打开文件。
  • dsh 说了什么。但当然,最好避免多次读取同一个文件数据。

标签: python python-3.x terminal


【解决方案1】:

files 是迭代器,读取文件会耗尽迭代器。也就是说,第一个read()用完了。

要再次读取同一个文件,您可以关闭然后重新打开文件,或者将文件的内部指针移回开头:file1.seek(0)

NB files 这样特别;大多数迭代器无法重置。

【讨论】:

  • 文件不是只是可迭代的。大多数可迭代的东西都可以迭代多次(例如列表)。但是文件是迭代器。一个迭代器通常只能使用一次。文件在迭代器协议上作弊,允许您在它们用完后seek 回到起点。大多数迭代器不允许你这样做。
  • @Blckknght:谢谢,已修复。
猜你喜欢
  • 2018-01-18
  • 2014-08-27
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 2010-12-24
  • 1970-01-01
相关资源
最近更新 更多