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

Why is len(file.read()) giving me a value of zero?

为什么两个函数的 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)

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

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

文件就像盒式磁带中的一盘长磁带;您可以读取该文件,但是当您完成时,您已经将磁带一直传递到最后。再次阅读不会给你数据 again.

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

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