Python中的file.read()[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

def main():
    f = open('yahoo.txt', 'w')
    f.write('yahoo\n')
    f.write('google\n')
    f.write('bing\n')
    f.write('duckduck\n')
    f.write('aol\n')
    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

任何帮助表示赞赏。谢谢

python python-3.x
2个回答
1
投票

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

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

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

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


2
投票

一旦调用f.read(),它就会读取整个文件,将cursor移动到文件末尾。如果您想再次从头开始阅读,可以使用seek函数。

def main():
    f = open('yahoo.txt', 'w')
    f.write('yahoo\n')
    f.write('google\n')
    f.write('bing\n')
    f.write('duckduck\n')
    f.write('aol\n')
    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()
© www.soinside.com 2019 - 2024. All rights reserved.