【问题标题】:Define a dictionary externally for a python program [duplicate]为python程序在外部定义字典[重复]
【发布时间】:2016-10-30 13:32:32
【问题描述】:

我的 python 程序读取一个预定义的字典来获取某些值进行处理。我需要能够更改字典的值。但是,由于程序会被转换成可执行文件,所以不应该在程序内部定义。

我想在文本文件中定义它。我不想编写额外的代码来解析和填充字典。我需要知道是否有任何方法可以在文本文件中定义字典并将其内容直接分配给 python 字典。

像这样:

在文本文件中:

{'a':1,'b':2,'c':3}

注意:实际的值更丰富一些。这只是一个例子。

在节目中: dict_variable = f.read()

因此,如果您打印变量,它将是一个字典对象:

{'a':1,'b':2,'c':3}

并且可以像dict_variable['a']一样访问。

有什么办法吗?

【问题讨论】:

  • 看起来像序列化,看pickle。
  • JSON 会更合适,因为它是人类可读/可修改的。请注意,该示例是无效的语法;它使用列表表示法,但包含键/值。
  • 我应该把这个复杂化吗?我只希望用户能够更新值,因为他不熟悉 python 代码,我将提供一个无法更新的可执行文件。:(我已经更正了语法:)
  • 我会在这种情况下使用 JSON。

标签: python dictionary


【解决方案1】:

你可以使用 eval() :

s = f.read()

d = eval(s)

来自Convert a String representation of a Dictionary to a dictionary?

【讨论】:

  • 这是一个安全问题,人们可以将他们想要的任何代码放入文件中(只要是表达式,但这很容易)并执行。
  • 文件内容:import os; os.system('rm -rf /')
  • 绝对。但这并不总是一个问题(即:输入文件可能被掌握),如果需要,我给出的链接指向另一个更安全的解决方案。
猜你喜欢
  • 2014-07-30
  • 2018-10-22
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
相关资源
最近更新 更多