在Python中,我说:
f = open("file.txt", "r")
a = f.readlines()
b = f.readline()
print a
print b
print a
会显示文件的所有行,print b
将不会显示任何内容。
反之亦然:
f = open("file.txt", "r")
a = f.readline()
b = f.readlines()
print a
print b
print a
显示第一行,但print b
将显示除第一行以外的所有行。
如果a
和b
都是readlines(),则a
会显示所有行,b
将不会显示任何内容。
为什么会这样?为什么两个命令都不能相互独立工作?有解决方法吗?
答案 0 :(得分:4)
因为首先执行.readlines()
将消耗所有读取缓冲区,而不会为.readline()
提取任何内容。如果你想回到开头,请使用.seek(0)
作为答案中已经提到的@abccd。
>>> from StringIO import StringIO
>>> buffer = StringIO('''hi there
... next line
... another line
... 4th line''')
>>> buffer.readline()
'hi there\n'
>>> buffer.readlines()
['next line\n', 'another line\n', '4th line']
>>> buffer.seek(0)
>>> buffer.readlines()
['hi there\n', 'next line\n', 'another line\n', '4th line']
答案 1 :(得分:2)
因为readlines
读取了文件中的所有行,所以没有剩余的行可供读取,再次读取文件,您可以使用f.seek(0)
返回到开头并从那里读取
答案 2 :(得分:1)
文件具有字节偏移量,只要您读取或写入它们就会更新。这将做你最初的预期:
a
现在b
是所有行,而 if (search.getText().equals(sDisplayText)) {
isNoRecordDisplayedMsg = true;
}
return isRecordHostDisplayedMsg;
}
只是第一行。