Python - 用替代exec动态创建变量

2 投票
1 回答
914 浏览
提问于 2025-05-10 21:30

我听说使用exec是个非常糟糕的做法。

不过,我刚开始学python,想弄明白怎么动态地创建一堆全局变量(我知道这也是不太好的做法,但我们先解决一个问题吧)。

这个过程是这样的:先获取需要创建的当前变量列表(现在这些变量在一个CSV文件里),然后从这个列表中提取出唯一的ID,再通过把ID加到变量名后面来创建必要的对象,并把另一个CSV文件里的内容读进来。

import pandas as pd

def importtest():
    ilist = pd.read_csv('Z:/fakepath/ID.csv')
    for i in range(0, len(ilist['ID'].unique())):
        tempID = ilist['ID'].unique()[i]
        exec("variable%s = pd.read_csv('%s')" % (
            str(tempID), 'Z:/fakepath/'+str(tempID)+'.csv'), globals())
        i = i + 1

有没有其他更好的方法来动态创建或更新我需要的变量,让它们出现在全局范围内呢?

相关文章:

  • 暂无相关问题
暂无标签

1 个回答

4

globals() 这个字典里,字符串形式的键对应的是变量名。所以,你不需要使用 exec,可以直接把变量写入全局变量的哈希表中:

     globals()["variable" + str(tempID)] = pd.read_csv('Z:/fakepath/'+str(tempID)+'.csv')

撰写回答