如果我对exec
语句使用for
语句,则会发生错误。
我的代码:
exec 'for i in A_'+aws_n+'_DATI[:]:'
exec ' a_'+aws_n+'_tt += {datetime.datetime.strptime(A_'+aws_n+'_DATI[n], "%Y%m%d%H%M")}'
exec ' n += 1'
结果:
**Traceback (most recent call last):
File "aws_merge.py", line 140, in <module>
exec 'for i in A_'+aws_n+'_DATI[:]:'
File "<string>", line 1
for i in A_156_DATI[:]:
^
SyntaxError: unexpected EOF while parsing**
但是,在上面的代码中,如果删除exec
语句并手动处理变量aws_n
,它将毫无问题地运行。
for i in A_156_DATI[:]:
print n
n += 1
为什么不运行?
答案 0 :(得分:2)
首先,不要使用exec()
。这完全没必要,dangerous。其次,exec()
执行完整的声明。 for i in A_156_DATI[:]:
不是完整的语句,而是循环语句的一部分。如果真的想要做一件愚蠢的事情,那么把所有的循环线放在一起:
exec 'for i in A_'+aws_n+'_DATI[:]: a_'+aws_n+'_tt += ...; n += 1'
供您参考,不需要[:]
。