Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中从文件中读取字典数据?_Python - Fatal编程技术网

如何在python中从文件中读取字典数据?

如何在python中从文件中读取字典数据?,python,Python,我有以下文件dic.txt: {'a':0, 'b':0, 'c':0, 'd':0} 我想读一下它的内容,把它当字典用。输入新数据值后,我需要将它们写入该文件。基本上,我需要一个脚本来使用字典,更新它的值并保存它们以供以后使用 我有一个工作脚本,但不知道如何将dic.txt的内容读入脚本中的变量。因为当我尝试这个: file = '/home/me/dic.txt' dic_list = open(file, 'r') mydic = dic_list dic_list.close() 我

我有以下文件dic.txt:

{'a':0, 'b':0, 'c':0, 'd':0}
我想读一下它的内容,把它当字典用。输入新数据值后,我需要将它们写入该文件。基本上,我需要一个脚本来使用字典,更新它的值并保存它们以供以后使用

我有一个工作脚本,但不知道如何将dic.txt的内容读入脚本中的变量。因为当我尝试这个:

file = '/home/me/dic.txt'
dic_list = open(file, 'r')
mydic = dic_list
dic_list.close()

我得到的mydic是一个str,我不能操纵它的值。这就是问题所在。如何从dic.txt创建字典?

您需要解析数据以从字符串获取数据结构,幸运的是,Python提供了一个安全解析Python数据结构的函数:。例如:

所以


您可以使用python内置函数eval():


文本文件是否包含Python字典或JSON的字符串表示形式?编辑:
s不是有效的JSON,所以问题得到了回答。有什么原因不使用来序列化内容吗?这有帮助吗?看起来很直截了当@NullUserException人类可读性可能很有价值。也就是说,最好使用一种标准化的格式,比如JSON。@NullUserException我看不出asker暗示的对他们有价值的地方。两者都有一个位置,没有理由相信
pickle
更适合这里。哎呀,我错过了文件中的单引号和双引号。您是对的,这调用的是
literal\u eval
,而不是JSON。@sr2222一开始我也没有找到它们。因为
不是有效的JSON,所以它一定不是JSON,所以为什么要使用一个不是为该作业设计的工具呢?
import ast

...

with open("/path/to/file", "r") as data:
    dictionary = ast.literal_eval(data.read())
>>> import json
>>> json.loads('{"a":0, "b":0, "c":0, "d":0}')
{u'a': 0, u'c': 0, u'b': 0, u'd': 0}
with open('/path/to/file', 'r') as f:
    d = json.loads(f.read().replace("'", '"')
   >>> mydic= "{'a':0, 'b':0, 'c':0, 'd':0}"
    >>> eval(mydic)
    {'a': 0, 'c': 0, 'b': 0, 'd': 0}
    >>>