我应该从文件中读取数据到我的 Python 程序中,并将文件中的所有数据放在不同的集合中,并使用与文件对应的名称。我有一个问题,因为我不想在 for 循环中为我需要的每个集合输入集合名称。
我已经让
exec
函数根据需要工作,但生成的集合似乎只是在我的代码的函数部分消失了。我用过dir()
,它说那些名字(nba2019
,nba2020
等)在那里但是当我尝试打印时,我得到一个NameError
.
def main():
files = ['2019.txt', '2020.txt', '2021.txt', '2022.txt', '2023.txt']
sets = ['nba2019', 'nba2020', 'nba2021', 'nba2022', 'nba2023']
for index, file_name in enumerate(files):
with open(file_name, 'r') as infile:
exec(f'{sets[index]} = {{element.rstrip() for element in infile}}')
print(nba2019)
main()
但是,当我将相同的代码放在主函数之外时,它起作用了——我不知道为什么!即使仅在 main 中使用
exec
,集合名称也仅出现在 main dir()
中,而不出现在全局中。有没有办法在不深入研究类的情况下保持这种设置?
files = ['2019.txt', '2020.txt', '2021.txt', '2022.txt', '2023.txt']
sets = ['nba2019', 'nba2020', 'nba2021', 'nba2022', 'nba2023']
for index, file_name in enumerate(files):
with open(file_name, 'r') as infile:
exec(f'{sets[index]} = {{element.rstrip() for element in infile}}')
print(nba2019)