3

重複の可能性:
Pythonで行数を安く取得するにはどうすればよいですか?

私の仕事では、ファイルを開いて番号を数える必要があります。その中の行の、私はこれで試しました

Last_Line = len(open(File_Name).readlines())

正常に動作していました。今、私は問題を抱えています、実際にはありません。ファイルの行数は453ですが、印刷Last_Lineすると339しか表示されません。試してみると

print linecache.getline(File_Name, 350)

行番号の内容を表示しています。350。

すべてのモードでファイルを開いてみました。ファイルに問題があるのか​​、私のロジックに問題があるのか​​。助けてください。

ありがとうございました

4

1 に答える 1

5

行末が混在しています。あなたのIDEはそれらすべてを有効なものとして扱っていますが、Pythonはそうではありません。ユニバーサル改行フラグ"U"を使用してファイルを開き、Pythonにそれらすべてを有効な行末として取得させます。

>>> f = open("file.txt", "w")
>>> f.write("a\rb\nc\r\nd\n\re\n")
>>> f.close()
>>> open("file.txt").readlines()
['a\rb\n', 'c\r\n', 'd\n', '\re\n']
>>> open("file.txt", 'rU').readlines()
['a\n', 'b\n', 'c\n', '\n', 'd\n', '\n', 'e\n']

のドキュメントはlinecache、行末の処理方法を指定していないようです。経験的に、それは普遍的なニューラインを使用します:

>>> for n in range(1, 8):
...   linecache.getline('file.txt', n)
...
'a\n'
'b\n'
'c\n'
'\n'
'd\n'
'\n'
'e\n'
于 2013-01-16T10:27:47.027 に答える