【问题标题】:Writing to config.py file from another python script从另一个 python 脚本写入 config.py 文件
【发布时间】:2021-12-28 16:29:52
【问题描述】:

我创建了一个 python 脚本,它使用 import configconfig.py 文件中读取数据以告知其输出。

config.py:

current_brightness = 0

script.py:

import config

set_brightness(config.current_brightness + 1)

我需要在运行脚本后将 current_brightness 永久递增到 config.py,以便后续脚本运行将导入新更新的值,而不是始终为 0。

换句话说,我如何写入config.py 文件,就像写入任何其他标准配置格式(如config.ini)一样?

【问题讨论】:

  • 你应该使用 config.json 而不是 config.py。然后,您可以轻松地加载、更改和重写文件,而不会让人头疼。您基本上是在使用它时尝试重写 python 文件。这是一个糟糕的设计,实现它所需的工作量基本上等同于构建自己的解析器。
  • 为什么不直接使用config.ini
  • 为此,您需要从字面上更改文件的内容。如果您执行config.brightness = 1,它将仅在当前程序的运行中持续存在,因为它只是更改了命名空间。但是下次您运行代码时,它将返回到文件中存在的值。您可以动态重写 py 文件,但正如其他人所说,为什么不直接使用 config.ini 并使用 configparser 这样的专用模块读取/写入它...

标签: python config configuration-files


【解决方案1】:

您需要将数据持久化在硬盘的某个位置。有两种解决方法

  1. 数据库
  2. 文件

如果只存储一个数字,数据库将是多余的。

将数字存储在文件中,使用 open() 以编程方式读取它,以编程方式更新值并将值写回文件中

结帐this 了解有关文件 I/O 的更多信息

【讨论】:

  • 我试图避免为了跟踪状态而必须拥有第三个文件,而是将所有文件都放在config.py 中。您是否建议我不要这样做,并将current_brightness 保留在它自己的文本文件中?
  • 你也可以使用config.ini
【解决方案2】:

我的建议是使用 classAttributes 在运行程序时,您可以将所需的设置定义为属性并使用它们

config.py

class Config:
current_brightness = 0 # define config attribute

在 script.py 中使用

Config.current_brightness +=1
# ....
print(Config.current_brightness) # return new value

【讨论】:

  • 但这不会是持久的吧?每次脚本运行都会重新初始化该类。
  • @MichaelMoreno,是的,这个答案应该被否决
  • 在你投反对票之前 - 请注意,我只回答了如何在程序中维护设置状态的问题 如果设置是动态的,则使用数据库获取初始设置,并且字典位于如果设置是固定的,则文件。
猜你喜欢
  • 2020-08-08
  • 1970-01-01
  • 2021-12-20
  • 2012-06-24
  • 2011-03-04
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 2018-10-30
相关资源
最近更新 更多