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

Python中如何将列表读取的字符串作为已定义变量名使用

解决方案

你读取文件得到的csv_name_1是字符串类型,Python不会自动将字符串和代码中定义的同名变量做关联,你可以用以下两种方法解决:

方案1:预建变量映射表(推荐,安全度最高)

提前把所有已定义的csv文件名变量存入一个映射字典,后续直接用读取到的字符串作为key取对应变量值即可,完全避免执行风险。
示例代码:

# 预定义变量
csv_name_1 = "%s/gpdb_%s.csv" % (tmp_dir, today_wo_clock)
csv_name_2 = "%s/gpdb_aa_%s.csv" % (tmp_dir, today_wo_clock)
# 新增映射字典
csv_name_map = {
    "csv_name_1": csv_name_1,
    "csv_name_2": csv_name_2
}

lookup = 'csv_name_'
with open('Excel_Mapping.txt') as myFile:
    for num, line in enumerate(myFile, 1):
        if lookup in line:
            data = line.strip().split(sep=',') # 加strip去除换行符等空白字符
            if len(data) >= 8:
                lov = data
                row = {
                    # 从映射表取对应的变量值
                    'csv_name': csv_name_map[lov[0]], 
                    'col1_name': lov[1], 
                    'col1_val': lov[2],
                    'col2_name': lov[3], 
                    'col2_val': lov[4], 
                    'col3_name': lov[5], 
                    'col3_val': int(lov[6]),
                    'result_col_name': lov[7], 
                    'sanity_excel_name': sanity_excel_name, 
                    'row': num
                }

方案2:调用全局变量字典(仅适合文件内容完全可控的场景)

如果你的Excel_Mapping.txt内容完全可信,不会出现恶意构造的字段,可以直接用Python内置的globals()方法获取全局变量字典,用读取到的字符串作为key取值:
只需要把你代码里给csv_name赋值的部分改成如下即可:

'csv_name': globals()[lov[0]]

注意:该方法存在安全风险,如果文件中被写入恶意字符串,可能会执行非预期代码,非必要不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:39:02