我试图将一个非常大的文本文件(~8Gb)拆分成每个1Gb的小文件。但是当我试图使用zip峎longest获取块时,它会抛出内存错误。错误如下:
Traceback (most recent call last):
File "splitFile.py", line 125, in <module>
splitFileIntoChunk(lineNumFileChunk, baseDirectoryPath, inputFile);
File "splitFile.py", line 63, in splitFileIntoChunk
for i, g in enumerate(group):
MemoryError
同样的代码对于800Mb的文件非常适用。在
另外,8Gb文件成功地转换成大小为512Mb的文件块。但在创建1Gb大小的文件块时显示错误。在
这是否与python编译器的RAM最大分配有关。如果是这样的话,我们该如何改变呢?在
我的系统有16gb的内存和i7处理器。内存也没有完全消耗,因为我已经通过资源监视器检查过了,它使用了大约2-4GB的RAM。在
以下是参考代码:
^{pr2}$然后:
def splitFileIntoChunk(lineCountChunkSize, absoluteFilePath, inputFileName):
_fileName, _fileExtention = os.path.splitext(inputFileName);
if not os.path.exists(absoluteFilePath + outputDirectory):
os.makedirs(absoluteFilePath + outputDirectory)
with open(absoluteFilePath + inputFileName) as inputFileObject:
group = grouper(lineCountChunkSize, inputFileObject, fillvalue=None);
for i, g in enumerate(group):
with tempfile.NamedTemporaryFile('w', delete=False) as fout:
for j, line in enumerate(g, 1): # count number of lines in group
if line is None:
j -= 1 # don't count this line
break
fout.write(line)
os.rename(fout.name, (absoluteFilePath + outputDirectory + _fileName + '_{0}' + _fileExtention).format(i))
有关代码的更多参考信息,请参阅:Splitting large text file into smaller text files by line numbers using Python
版本:Python 3.4
操作系统:Windows 7
体系结构:64位
目前没有回答
相关问题 更多 >
编程相关推荐