2012-03-17 11 views
0

私はかなりシンプルなコードを書いていますが、私は1つのことを理解できません。 コードはそのファイルを読み取った後の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のは"(LINE1、LINE2、LINE3、LINE4)テキストの4行が含まれているとします。このコードを実行した後、私は出力を得るでしょう:

4 
0 

最初の1つはOKですが、2番目の理由は何ですか?以前の関数はEOFに設定されていますか?もしそうなら、最初からファイルを読んでいないのはなぜですか?ファイルをリロードする方法はありますか?

答えて

2

はい、すでにファイル全体を読み込んでいるため、2番目のファイルは0なので、CountCharsには何も残っていません。

に電話する前に、name.seek(0)をファイルの先頭に戻す必要があります。 file object documentationをチェックしてください。

+1

また、読み込みデータを保存して再解析することもできます。 –

関連する問題