繁体   English   中英

为什么read函数仅在我们第一次在python中打开对象时才起作用?

[英]Why read function works only the first time we open the object in python?

为什么每次都必须重新打开文件对象才能再次读取它?

Python 3.6.3 (default, Oct 24 2017, 14:48:20)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.chdir('/home/xprodigy/Prog/Practice Projects/madLibs/')
>>> file = open('madlib1')
>>> file.read()
'The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN was unaffected by these events.\n'
>>> file.read()
''
>>> file.read()
''
>>> file.close()
>>> file = open('madlib1')
>>> file.read()
'The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN was unaffected by these events.\n'
>>> file.read()
''

它应该发生吗?

它在内部如何运作?

从文档:

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

因此,回答您的问题:

是的,这是故意的。

由于f.read返回文件的下一个x数量,默认大小为整件文件,因此要重置f.read(),您需要关闭并重新打开文件。

实际上,如果您需要在同一程序中两次在同一文件上调用f.read(),则只需将第一次调用的结果保存在变量中,第二次需要即可。

认为将文件读为读书。

阅读本书时,您需要返回第一页以再次阅读。 您可以通过关闭书籍并再次将其打开到第一页(即关闭并打开文件)来完成此操作,也可以轻拂回到第一页而不关闭它( file.seek(0) )。

Python的行为方式相同。

这样做的原因是因为将整个文件存储在内存中可能非常不合适。 您不记得《指环王》的每句话,对吗? 因此,它仅将正在读取的部分以及您显式写入变量的部分保留在内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM