Json 在python中打开重字符串文本词典

Json 在python中打开重字符串文本词典,json,string,dictionary,abstract-syntax-tree,Json,String,Dictionary,Abstract Syntax Tree,我尝试转换一个重载的.txt,它是一个字典的字符串,如(一部分): 我尝试了ast模块: import ast dic_gene_definitions = open("Gene_Ontology/output_data/dic_gene_definitions.txt", "r") dic_gene_definitions = dic_gene_definitions.read() dic_gene_definitions = ast.literal_eval(dic_gene_definit

我尝试转换一个重载的.txt,它是一个字典的字符串,如(一部分):

我尝试了
ast
模块:

import ast
dic_gene_definitions = open("Gene_Ontology/output_data/dic_gene_definitions.txt", "r")
dic_gene_definitions = dic_gene_definitions.read()
dic_gene_definitions = ast.literal_eval(dic_gene_definitions)
它的重量是22Mb,如果不挤压的话,它的速度会很慢

我真的想打开一个500 Mb的文件。。。 I'
json
模块,它可以更快地打开,但在繁重的字典字符串中,它也会崩溃(不包括简短的示例)

有什么解决办法吗


非常感谢。

我找到了一些非RAM内存消耗方法

在Ubuntu的终端中使用:

sudo swapon -s
我们可以了解不同操作消耗的RAM内存:

Filename                Type        Size    Used    Priority
/swapfile               file        2097148 19876   -1
例如,通过制作字典来操作此示例文件(500Mb),最好的方法是从普通文本表格数据格式打开它,并使用最小内存消耗进行操作:

with open("Gene_Ontology/output_data/GO_annotations_dictionary.txt", "r") as handle:
    for record in handle.read().splitlines():
        anote = record.split("\t")

ast
模块正常,但文件太大

我找到了一些非RAM内存消耗方法

在Ubuntu的终端中使用:

sudo swapon -s
我们可以了解不同操作消耗的RAM内存:

Filename                Type        Size    Used    Priority
/swapfile               file        2097148 19876   -1
例如,通过制作字典来操作此示例文件(500Mb),最好的方法是从普通文本表格数据格式打开它,并使用最小内存消耗进行操作:

with open("Gene_Ontology/output_data/GO_annotations_dictionary.txt", "r") as handle:
    for record in handle.read().splitlines():
        anote = record.split("\t")

ast
模块正常,但文件太大

您需要将500 Mb文件加载到内存中的用例是什么?对于包含氨基酸片段的蛋白质注释词典(大约300位用于片段+描述,66000个蛋白质)。同样,您将如何使用该词典。。。只是为了创建AST?我无论如何都不是python大师,但是创建一个指向值的文件偏移量的键的散列列表并首先将其加载到内存中,然后在引用键时,您可能会在实际数据值中出错,这有意义吗?我不太懂。我只从字典的字符串中提取一个字典文件。我想用不同的键输入保存数据,就像普通字典一样。但我接受下面的答案。你需要一个500 Mb的文件加载到内存中用于什么用例?对于一个包含氨基酸片段的蛋白质注释字典(大约300位用于片段+描述,66000个蛋白质)。同样,你将如何使用字典。。。只是为了创建AST?我无论如何都不是python大师,但是创建一个指向值的文件偏移量的键的散列列表并首先将其加载到内存中,然后在引用键时,您可能会在实际数据值中出错,这有意义吗?我不太懂。我只从字典的字符串中提取一个字典文件。我想用不同的键输入保存数据,就像普通字典一样。但我接受下面的答案。