我正在解析一个20Gb的文件,并将满足某个条件的行输出到另一个文件,但是有时python会一次读取两行并将它们连接起来。
inputFileHandle = open(inputFileName, 'r')
row = 0
for line in inputFileHandle:
row = row + 1
if line_meets_condition:
outputFileHandle.write(line)
else:
lstIgnoredRows.append(row)
我检查了源文件中的行尾,它们作为换行符(ascii char 10)签出。拉出问题行并对其进行隔离分析可以按预期工作。我在这里遇到了一些python限制吗?第一个异常在文件中的位置大约是4GB标记。
google快速搜索“python读取大于4gb的文件”得到了许多结果。见here for such an exampleand another one which takes over from the first。
这是Python中的一个bug。
以及周围的工作:
4GB标记可疑地接近可以存储在32位寄存器(2**32)中的最大值。
您发布的代码本身看起来很好,所以我怀疑您的Python构建中有一个bug。
FWIW,如果使用枚举,代码片段会更干净一些:
相关问题 更多 >
编程相关推荐