You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何动态访问config配置文件中的变量

Python动态读取配置文件变量的解决方案

错误原因

你之前的写法不符合Python的属性访问规则:

  • cf.var+str(variable_no)会被解析为先取cf的var属性(你的配置文件无该属性会直接报错),再将属性值和字符串拼接,和你预期的「拼接属性名再访问」逻辑完全不符。
  • cf.new_var会被解析为访问cf下名为new_var的固定属性,不会将你之前定义的new_var变量的值作为属性名读取,配置文件无该属性因此报错。

正确实现方法

方法1:使用getattr()内置函数(最推荐)

getattr()专门用于动态获取对象/模块的属性,直接传入属性名的字符串形式即可:

import config as cf

for variable_no in range(1, int(cf.total_var_count) + 1):
    # 第三个参数为可选默认值,找不到对应属性时会返回该值,避免抛出异常
    var_value = getattr(cf, f"var{variable_no}", None)
    print(var_value)

方法2:访问模块内置的__dict__字典

模块的所有属性都会存储在自带的__dict__字典中,直接用字符串作为key读取即可:

import config as cf

new_var = 'var1'
print(cf.__dict__[new_var])

优化建议

如果可以修改配置文件,更推荐直接用列表或字典存储批量变量,不需要动态拼属性名,可维护性更高:
配置文件修改示例:

total_var_count = 4
# 用列表存储
var_list = [1,2,3,4]
# 也可以用字典存储
var_dict = {"var1":1, "var2":2, "var3":3, "var4":4}

主文件读取示例:

import config as cf

# 直接遍历列表
for value in cf.var_list:
    print(value)

# 按键读取字典
print(cf.var_dict["var1"])

内容的提问来源于stack exchange,提问作者user16800232

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:54:02