Я пытаюсь прочитать файл размером 59 ГБ и разбить его на несколько новых файлов в соответствии с некоторым идентификатором, найденным в начале каждой строки. Я запускаю код ниже, который ломается с ошибкой памяти после создания 45 ГБ файлов. Системная память остается на очень низком уровне в течение всего времени и внезапно создает после того, как код работает в течение примерно 2 часов. У меня есть 16 ГБ оперативной памяти. Я неправильно использую буферизацию? Любая идея?
outputFile = '/home/.../folder1'
directory = '/home/.../folder2/'
with open(directory + 'aldk_tab_1mn.csv', 'r', buffering=50000000) as fin:
firstLine = fin.readline()
print(firstLine)
for line in fin:
testChar = line[0:4]
if testChar[0] == 'A' :
if not os.path.exists(outputFile + '/A/' + testChar+'.csv'): # first time open a file
with open(outputFile + '/A/' + testChar+'.csv', 'a') as foutA:
print('file', testChar, 'created')
foutA.write(firstLine)
foutA.write(line)
else:
with open(outputFile + '/A/' + testChar+'.csv', 'a') as foutA:
foutA.write(line)
else:
if not os.path.exists(outputFile + '/B/' + testChar+'.csv'): # first time open a file
with open(outputFile + '/B/' + testChar+'.csv', 'a') as foutB:
print('file', testChar, 'created')
foutB.write(firstLine)
foutB.write(line)
else:
with open(outputFile + '/B/' + testChar+'.csv', 'a') as foutB:
foutB.write(line)
Произошла ошибка
MemoryError
Traceback (most recent call last)
<ipython-input-17-761f2fcce982> in <module>()
6
----> 7 for line in fin:
8 testChar = line[0:4]
9 if testChar[0] == 'A' :
MemoryError: