[英]Iteration number processing large files line by line
我需要逐行處理Python中的大文件(大約1GB)。 我使用這種方法來做到這一點:
with open('file.txt', 'r') as f:
i = 0
for fline in f:
process(fline)
i = i + 1
print i
i
的值(迭代次數=文件的行數)是19,991,889。
但是該文件(使用EmEditor打開)報告該文件有63,941,070行。
為什么行數不匹配? 我做錯了什么?
謝謝。
我可以想到兩種可能性。
說明:您以文本模式打開文件。 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':print(fline)”。
數字不匹配,因為open
函數使用的編碼不適用於此文件,請嘗試使用“ ISO-8859-1”編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.