我正在尝试打开一个巨大的文本文件(1 GB)并执行一些文本挖掘 我愿意进行一些正则表达式搜索 当我使用read()函数时,我收到错误:
File "C:\Python33\lib\encodings\latin_1.py", line 26, in decode
return codecs.latin_1_decode(input,self.errors)[0]
MemoryError
我的代码是:
dataFile = open('data/AllData_2000001_3000000.txt', 'r', encoding="latin-1")
print(dataFile.read())
为了执行正则表达式搜索,打开文本的最佳方法是什么? 谢谢!
答案 0 :(得分:5)
通过执行print(dataFile.read())
您将整个文件加载到内存中,这就是您收到错误的原因。更好的方法是逐行:
dataFile = open('data/AllData_2000001_3000000.txt', 'r', encoding="latin-1")
for line in dataFile:
#perform regex searching in each line here
print(line)
希望这有帮助!
答案 1 :(得分:0)
取决于你想做什么:
如果您真的想要在整个1GB上进行正则表达式搜索,那么您没有很多选择。如果你现在使用的是32位版本,那么切换到64位Python可能就是一个。
您的文字文件是否按行或类似的方式组织?在这种情况下,您可以读取一行,处理它,转到下一行,依此类推。当然,这适用于您可以隔离的任何“块”。