我可以想到两种可能性。
- 您在使用Windows 2.x中,该文件包含约3倍之多 '\ r' 作为公认的 '\ r \ n' 或 '\ n' 行结束,并EmEditor中承认 '\ r'作为行结尾,就像Python 3.x一样。或者在另一个操作系统上发生类似的事情。
说明:以文本模式打开文件。 3.x使用与操作系统无关的通用换行符,'\ r'和'\ r \ n'被转换为'\ n'。 2.x使用与操作系统相关的读取,在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':打印(fline)“。
- Python在文件中有一些东西被认为是文件结束,而EmEditor却没有。诊断。在循环前添加'length = 0',在循环中添加'length + = len(fline)',看看它是否至少大约在之后。
什么是“进程”功能? –
包含你的文件混合行尾('\ n','\ r','\ n \ r')? – Daniel
你能使用一个实用程序,比如'wc'来获得另一个行数吗?顺便说一下,你可以使用'enumerate'(它会自动为你提供索引值)压缩你的for-loop,对于我来说,在枚举(f)中是fline:' - 参见http://stackoverflow.com/questions/522563 /访问最索引功能于蟒-for循环。最后,当读取文件时,'r'是可选的 – Levon