为什么我会得到这个"错误"当我在Python中使用exec语句时?

时间:2017-06-13 04:23:06

标签: python for-loop exec

如果我对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

为什么不运行?

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'

供您参考,不需要[:]