file.read() in Python


def main():
f = open('yahoo.txt', 'w')
f.write('yahoon')
f.write('googlen')
f.write('bingn')
f.write('duckduckn')
f.write('aoln')
f.close()

f = open('yahoo.txt', 'r')
print('f.read ', f.read() )
print('f.read(5)', f.read(5)) # just 'f.read(4)' being printed
main()

在倒数第二行中print('f.read(5)', f.read(5))只打印字符串'f.read(5)'而没有为另一个打印参数打印任何内容。

我希望出来是

f.read(5) yahoo

任何帮助不胜感激。 谢谢

调用 f.read(( 后,它会读取整个文件,将cursor移动到文件的末尾。如果您想重新开始阅读,可以使用seek功能。

def main():
f = open('yahoo.txt', 'w')
f.write('yahoon')
f.write('googlen')
f.write('bingn')
f.write('duckduckn')
f.write('aoln')
f.close()

f = open('yahoo.txt', 'r')
print('f.read ', f.read() )
f.seek(0)   # seek moves the cursor to the beginning of the file
print('f.read(5)', f.read(5)) # just 'f.read(4)' being printed
main()

我建议您检查文档。第一次读取必须读取整个内容并将文件偏移量移动到文件末尾,因此第二次读取不会读取任何内容,因为它到达文件末尾。

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

您可以检查查找方法将文件位置移动到文件的开头并再次读取。

https://docs.python.org/2/tutorial/inputoutput.html