2012-03-17 82 views
0

我写了一个非常简单的代码,但我无法理解一件事。 代码看起来像阅读文件后的EOF?

name = open("test.txt") 

def CountLines(name): 
    return len(name.readlines()) 

def CountChars(name): 
    return len(name.read()) 


print(CountLines(name)) 
print(CountChars(name)) 

现在让我们假设“的test.txt”包含4行文字(一号线,2号线,3号线,4号线)。运行此代码后,我会得到输出:

4 
0 

第一个是好的,但为什么第二个是0?因为较早的功能设置为EOF?如果是这样,为什么它不从头开始读取文件?有没有办法重新加载文件?

回答

2

是的,第二个是0,因为您已经阅读了整个文件,所以在CountChars中没有什么可读的。

您需要将name.seek(0)放在那里以便在拨打CountChars之前返回到文件的开头。检查出file object documentation

+1

或者,存储并重新分析读入数据。 – 2012-03-17 20:46:00