阅读python中的大型文本文档
我有一个16GB的文本文档文件,其结构如下:阅读python中的大型文本文档,python,Python,我有一个16GB的文本文档文件,其结构如下: name1 1 0 1 0 1 1 1 0 0 1 ... ... nameN 1 1 1 0 1 0 -1 1 0 1 我希望能够对文件执行以下处理: my_dict = {} for line in data.split("\n"): cells = line.split() my_dict[cells[0]] = [int(x) for x in cells[1:]] 问题是,如果我通过以下方式打开文件: open(da
name1 1 0 1 0 1 1 1 0 0 1
...
...
nameN 1 1 1 0 1 0 -1 1 0 1
我希望能够对文件执行以下处理:
my_dict = {}
for line in data.split("\n"):
cells = line.split()
my_dict[cells[0]] = [int(x) for x in cells[1:]]
问题是,如果我通过以下方式打开文件:
open(data) as f:
content = f.readlines()
我得到:
“列表”对象没有“拆分”属性
有没有办法打开文件以进行上述处理?这是因为
f.readlines()
提供了代表行的字符串列表。它已经按“\n”
进行了拆分,因此当您尝试进行处理时,请不要按换行符进行拆分:
my_dict = {}
for line in content:
cells = line.split()
my_dict[cells[0]] = [int(x) for x in cells[1:]]
最好的方法是
with open(data) as f:
for line in f:
cells = line.strip().split()
# do something
这样,您就不会在内存中多次保存16GB数据(Python2和Python3)。您还应尽量避免保存完整的dict。是否确实要将整个16 GB加载到一个
dict
?这将需要超过16 GB的内存。如果是这样的话,阿南的回答应该会给你预期的结果。