为什么len(file.read())给我的值为零?

时间:2015-02-22 03:52:03

标签: python python-2.7 file-io eof seek

为什么两个函数的print len()值都不同?它们不一样吗?

此脚本打开的文件是一个包含三行文本的文本文件。我把它命名为test.txt,里面是

Jack and Jill
gave up 
they went home with no water

代码:

def function2nd (filename):
        target = open(theFile, 'r')
        inData = target.read()
        print inData
        print len(inData)
        target.close()
theFile = raw_input("What is the file name?\n>>")
function2nd(theFile)

def function3rd (filename):
        target = open(theFile, 'r')
        target.read()
        print target.read()
        print len(target.read())
        target.close()

function3rd(theFile)

2 个答案:

答案 0 :(得分:4)

文件就像一个长条带;你可以阅读文件,但是当你完成时,你已经将磁带一直传到最后。再次阅读不会再次为您提供数据

因此,您的第二个函数试图从已经缠绕到最后的文件中读取数据。

您可以通过重新打开文件或使用target.seek(0)将其发送回开头来回放“磁带”。

答案 1 :(得分:1)

好吧,第二个你读取打开文件然后调用len,但文件对象在那时是空的。

在第一个文件中,您读取文件,将内容放入变量中,然后获取变量的长度。