私は2つの可能性を考えることができます。
- あなたがWindows上で2.xのを実行している認識として、ファイルを約3倍など、多くの '\ rを' 文字が含まれている '\ rを\ nは' または '\ n' の行末、およびEmEditorのは '\ r' を認識し、 Python 3.xと同様に行末として使用されます。または、2.7で別のOSで同様のことが起きています。
説明:テキストモードでファイルを開きます。 3.xはOSに依存しないユニバーサル改行が使用され、 '\ r'と '\ r \ n'は '\ n'に変換されます。 2.xはOS依存の読み込みを使用し、Windowsでは '\ r \ n'のみが使用されます。
例:
with open('tem.dat', 'wb') as f:
f.write(b'a\rb\r\nc\n\rd\n')
with open('tem.dat', 'r') as f:
for i, t in enumerate(f):
print(i, t, repr(t[-1]))
3.xのプリント
0 a
'\n'
1 b
'\n'
2 c
'\n'
3
'\n'
4 d
'\n'
2.xのプリント
(0, 'a\rb\n', "'\\n'")
(1, 'c\n', "'\\n'")
(2, '\rd\n', "'\\n'")
診断:flineとの「あなたのコードにある場合は '\ r' を追加します。印刷前に印刷してください。
- ファイル内にPythonがEnd-of-Fileと見なすものがあり、EmEditorには何かがありません。診断。ループの前に 'length = 0'を追加し、ループの中で 'length + = len(fline)'を追加して、少なくともほぼ直後であるかどうかを確認します。
'process'関数とは何ですか? –
にはファイル混在行末( '\ n'、' \ r'、 '\ n \ r')が含まれていますか? – Daniel
別の行数を取得するために 'wc'のようなユーティリティを使用できますか?ちなみに、あなたは 'enumerate'を使ってforループを圧縮することができます(これは自動的にインデックス値を与えます)' for i、enumerate(f)でfline: ' - http://stackoverflow.com/questionsも参照してください/ 522563/index-in-python-for-loopsにアクセスしてください。最後に '' r''はファイルを読むときにオプションです。 – Levon