Python中的file.read()

时间:2018-09-12 05:11:28

标签: python python-3.x

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

感谢您的帮助。 谢谢

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

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

  

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

     

您可以选中 seek 方法,将文件位置移至文件开头并再次读取。

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