Python 为什么file.readline()可以工作,但却可以打开(';文件名';,';r';)。readline()不能吗?
我刚刚解决了一个让我至少浪费了3个小时生命的难题:Python 为什么file.readline()可以工作,但却可以打开(';文件名';,';r';)。readline()不能吗?,python,file,python-3.x,readline,Python,File,Python 3.x,Readline,我刚刚解决了一个让我至少浪费了3个小时生命的难题: >>> open('foo.py','r') >>> open('foo.py','r').readline() >>> '' 我尝试了各种组合,但都没有用,当然我问了谷歌叔叔 正如你所知道的,howewer,这确实有效 >>> bar=open('foo.py','r') >>> bar.readline() >>> 'Crap' &
>>> open('foo.py','r')
>>> open('foo.py','r').readline()
>>> ''
我尝试了各种组合,但都没有用,当然我问了谷歌叔叔
正如你所知道的,howewer,这确实有效
>>> bar=open('foo.py','r')
>>> bar.readline()
>>> 'Crap'
>>> bar.readline()
>>> 'More crap'
>>> bar.readline()
>>> 'Even MORE crap'
>>> bar.readline()
>>> 'End of crap'
所以,我一直认为分配给变量的值就是这个。就这么简单
这是不可能的,否则代码将以任何方式工作
除了要求直接回答,有没有人有我可以看的材料,可能没有
一个维基页面,因为这有点太高级了,但是一篇文章 首先,您没有调用该函数
open('foo.py','r').readline
如果您这样尝试:
open('foo.py','r').readline()
您应该会看到预期的行为。对文件对象调用readline()
将从文件中读取,直到找到换行符并返回它读取的内容。在此过程中,内部指针将位于下一行,因此另一次调用readline()
将读取下一行,直到找到文件的结尾
当然,只有在不断引用同一文件对象时,才会保留内部指针。调用open()
将为您提供这样一个文件对象,但再次调用open()
将为您提供另一个独立的文件对象
因此,执行两次open(…).readline()
将只打开文件,读取第一行,然后两次扔掉文件对象。第二个readline()
调用将引用一个新的文件对象,它当然不会共享第一个文件对象的指针
因此,如果要读取整个文件,应该只使用一个file对象,并在该对象上重复调用readline()
最后请注意,调用方法实际上意味着在末尾添加括号。否则,您将只引用该方法而不实际调用它。在您的第一个示例中,我看到的是readline而不是readline(),您在第一个示例中没有调用该方法。如果您反复使用
open('foo.py','r').readline()
,那么您会反复重新打开文件并阅读第一行。具有讽刺意味的是,您在标题中发布的代码是正确的:open('name of file','r')。readline()
Sheers mate,这几乎是这里唯一具有建设性的评论。尽管与此无关,这仍然是一个一流的答案。那么,将文件对象赋值给变量是否会创建一个新对象?我以为这就是变量w/对象?调用open()
将创建一个新的文件对象。您可以将其保存到变量中,也可以将其丢弃,这并不重要。如果再次调用open()
,则会得到一个新的文件对象,其状态为全新状态(从第一个字符开始)。啊,我明白了,谢谢:)