我有一个包含我的学校时间表的文件,我想从文件中的每一行创建一个列表。该文件看起来是这样的:使用具有格式化字符串的Python的exec()函数?
first:second:third:fourth:fifth
first:second:third:fourth:fifth
的代码是这样的:
schedule_file = "school-schedule.txt"
with open(schedule_file) as schedule:
for c, line in enumerate(schedule):
exec("ln%s = schedule.read().split(':')" % str(c+1))
print(ln1)
print(ln2)
print(ln3)
print(ln4)
print(ln5)
print(ln6)
print(ln7)
print(ln8)
print(ln9)
print(ln10)
我知道该文件还有十行,这就是为什么,出于测试目的,我想它来打印这十年名单。不幸的是,它似乎把第一行到名为ln1
列表,并提出了一个NameError异常所有其他列表,从ln2
:
['first', 'second', 'third', 'fourth', 'fifth']
Traceback (most recent call last):
File "D:\schedule.py", line 10, in <module>
print(ln2)
NameError: name 'ln2' is not defined
是没可能使用格式化字符串exec()
函数内部还是我我犯了一些其他愚蠢的错误?
你错就错在使用'EXEC()'。不惜一切代价避免它。而不是试图动态制作10个变量,只需使用字典。 – MattDMo