【问题标题】:How to make a config file that stores global variables but can also be easily edited from the level of the code?如何制作一个存储全局变量但也可以从代码级别轻松编辑的配置文件?
【发布时间】:2017-05-08 01:40:36
【问题描述】:

我有一个使用一些全局变量的 Python 项目。该项目有多个 .py 文件,所有这些文件都需要能够轻松读取这些变量。他们都应该能够编辑它们。

现在我正在使用一个 .py 文件来存储变量,我只是将它们作为模块导入到其他文件中。但是,此解决方案远非最佳,因为我无法轻松编辑它们。我天真地尝试为变量编写 setter,但显然这也不起作用。

我曾考虑将 JSON 用于变量,但读取它们并不像“导入 cfg”那么简单。

对于这个问题有没有标准的解决方案,因为我是菜鸟,所以我不知道?

感谢您的每一个回答。

【问题讨论】:

  • 使用数据库或写入文件。这两个似乎是最明显的答案。
  • @GarrettKadillak 我想过,但它似乎有点过分,因为我只需要存储大约 10 个变量。我不想让事情变得过于复杂。
  • 我同意数据库有点矫枉过正,但你可以使用sqlite。此外,使用 Python 读取/写入文件非常容易,所以我不同意它使事情复杂化。
  • @GarrettKadillak 感谢关于 sqlite 的建议,我会阅读它。至于文件写入 - 所以您建议仅将这些变量的值存储在文本文件中,然后读取它们并将它们实际分配给“cfg.py”模块中的正确变量名?我喜欢将 .py 文件作为配置的原因是我不需要介意变量的顺序,我可以添加 cmets 并基本上将文件组织成尽可能可读。通过标准 Python 函数从文件读取似乎受到更多限制
  • 您可以使用DictReader 将CSV 作为字典作为python 读取,这样您就可以根据需要组织文件:)

标签: python-3.x global-variables file-manipulation configuration-files


【解决方案1】:

将信息存储在 CSV 中,然后使用 csv.reader 将键值对写入字典之类的东西。这里有一些示例代码可以帮助您入门:

csv 文件:

firstname Garrett
something_else blah

Python:

import csv

output = []
with open('csv.csv') as csvfile:
    reader = csv.reader(csvfile, delimiter=' ')
    for row in reader:
        output.append(tuple(row))
return {key: value for (key, value) in output}

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多