【问题标题】:How to use prefix paths in a Python configuration file?如何在 Python 配置文件中使用前缀路径?
【发布时间】:2021-09-13 08:00:16
【问题描述】:

我的 python 配置文件如下所示:

[PATHS]
source = Q:\data\Energy\Source
archive = Q:\data\Energy\Archive

[DB]
host= localhost
user = root
passwd = *****
database= *****

现在我的路径有问题,位置(实际上是字母)不时更改,因为我正在使用网络驱动器。网络驱动器根据其可用性选择位置/字母。所以如果X不可用例如网络驱动器使用Y等。目录及其子目录的名称永远不会改变,所以它们将始终称为Energy\SourceEnergy\Archive

我需要如何配置我的路径以确保它们始终进入正确的位置?

【问题讨论】:

  • 我认为使用.ini 文件格式最好的办法就是将其拆分为单独的driveLetter 选项并拆分[Paths] 成员以隐式地在前面添加驱动器号其中。
  • @tripleee 你是什么意思?你能举个例子吗?
  • driveletter = Q 然后使用source = \data\Energy\Source

标签: python path config configparser


【解决方案1】:

基于@tripleee 的建议,并假设您有办法在运行时知道当前驱动器号是什么:

像这样创建你的配置文件(使用基本插值

[DEFAULT]
driveletter = X
[PATHS]
source = %(driveletter)s/data/Energy/Source
archive = %(driveletter)s/data/Energy/Archive

阅读它,并在运行时更改默认字母。假设您有一个 newletter 变量设置为“Z”

cfg = configparser.ConfigParser()
cfg.read("myconfig.ini")
cfg["DEFAULT"]["driveletter"] = newletter
cfg["PATHS"]["source"]
'Z/uat/data/Energy/Source'

【讨论】:

  • 我的运行时间是每 5 分钟一次,这是否意味着我必须每 5 分钟更改一次配置文件......
  • 我认为您的连接不会每 5 分钟更改一次名称 :) 所以您的代码只需要检查“旧”连接字母是否仍然有效,如果不是则发现当前的(这里有很多 Q/A,例如 this one )并更新配置文件。无需任何手动更新
猜你喜欢
  • 2012-01-31
  • 1970-01-01
  • 2019-01-28
  • 2020-05-12
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
相关资源
最近更新 更多