Python文件写入内存使用情况

时间:2017-09-07 16:23:30

标签: python memory file-writing

我有一些巨大的未分类的ID文件,如:

file1.txt
a1
a2
a3...etc

file2.txt
b1
a2
c1...etc

我试图最终把它们放在一个单独的排序文件中。它们每个都是几千兆字节,因此我无法将它们全部加载到内存中。

我目前的解决方案是迭代每个文件并根据每个ID的第一个字符将行保存到新文件。 这将创建一个可能包含26个文件的目录,每个文件对应一个字母。 然后,我可以稍后组合这些文件,因为每个字母的文件都可以加载到内存中。这假设ID首先按字母顺序按字母顺序分布:

outputs = {}
for filename in listdir(directory):
    with open(filename) as f:
       for line in f:
           if line[0] not in outputs:
               outputs[line[0]] = open('sorted_' + line[0] + '.txt', 'w')
           outputs[line[0]].write(line)

_ = [v.close() for v in outputs.itervalues()]

(then sort individually and concat the newly categorized files)

我的问题是:新26个文件的内容有多少被保存在内存中?是立即写入文件,还是仅在关闭后实际写入?

我注意到,通常如果我cat在另一个终端窗口中创建文件,它实际上不会包含您要在其中调用.close()之前写入的内容。但他们可以保存在临时文件中,我不确定。

这只是将所有内容保存在内存中,因而效率极低吗?

0 个答案:

没有答案