当前位置: 首页 > 面试题库 >

尝试第二次读取打开的文件没有任何数据

仉英朗
2023-03-14
问题内容
fin = open('/abc/xyz/test.txt', 'a+')

def lst():
  return fin.read().splitlines()

print lst()

def foo(in):
  print lst()
  fin.write(str(len(lst()) + in)
  fin.flush()

在上面的代码中,当print lst()在外部函数中调用它时,它会提供正确的结果,但是当尝试在函数中调用同一函数时,foo()它会产生一个空列表,该列表的len(lst())值为0。上面的代码有什么问题?


问题答案:

文件对象只能读取一次。一旦fin已经read(),您可以不再从文件中读取任何东西,因为它已经达到了EOF

要读取文件的内容,请调用f.read(size),它将读取一定数量的数据并将其作为字符串返回。size是一个可选的数字参数。当size省略或为负数时,将读取并返回文件的全部内容;如果文件的大小是计算机内存的两倍,那将是您的问题。否则,最多读取并返回字节大小。如果已到达文件末尾,则f.read()将返回一个空字符串(“”)。

http://docs.python.org/tutorial/inputoutput.html#methods-of-file-
objects

如果您确实需要可重入的文件访问权限,请使用:

def lst():
  fin.seek(0)
  return fin.readlines()


 类似资料:
  • 我试图简单地读取文本文件的内容并将其存储到数组中,但是: 它给了我一个“打开”的错误: 此检查检测应该解析但不解析的名称。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。与实例项相比,顶层和类级项得到更好的支持。 谁能解释我做错了什么?谢谢

  • 如果用户通过cmd输入以下数字:< code>2 -13 4 12 -1 113 19,则输出应为: 但我得到的是这个: 即该对中的第二个数字再次重复自己作为下一对中的第一个数字。代码有什么问题?

  • 问题内容: 我编写的python程序存在一个小问题,该程序可以从特殊文本文件中提取一些信息。循环(下面的代码)需要执行我的函数,超过500个文件(一个文件列出一个列表),这样我才能构建数据集。 错误:发生的是IOException ,因此由于某种原因python无法访问文件。我已经检查了目录路径名(位置)和文件许可权,它们是正确的(读+写)。有什么想法为什么当文件确实存在且路径名正确时会报告IOE

  • 当第二次打开我的SupportMapFragment(Android maps v2)时(调用setContentView),我得到以下错误: 我不知道这个错误是什么意思。有人能解释一下吗?

  • 问题内容: 我有一个文件,其后三行如下。我想检索倒数第二行,即。 我不知道行号。如何使用Shell脚本检索它?在此先感谢您的帮助。 问题答案: 尝试这个:

  • 问题内容: 我有一个python脚本正在查询共享Linux主机上的MySQL服务器。出于某种原因,对MySQL的查询通常会返回“服务器已消失”错误: 如果此后立即再次尝试查询,通常会成功。因此,我想知道python中是否有一种明智的方法来尝试执行查询,如果失败,则可以重试固定次数的尝试。可能我想让它尝试5次再完全放弃。 这是我的代码类型: 显然,我可以通过在except子句中进行另一次尝试来做到这