Python one-liner的语法错误

时间:2014-05-19 06:01:29

标签: python python-2.7 syntax

python -c 'import sys; print "a"'

有效,

python -c 'for a in [1, 2, 3]: print a'

有效,但

python -c 'import sys; for a in [1, 2, 3]: print a'

失败
File "<string>", line 1
  import sys; for a in [1, 2, 3]: print a
                ^

为什么?


编辑我的解决方法:

python -c 'import sys; print "\n".join([1, 2, 3])'

(幸运的是,它也适用于我的真实代码。)

2 个答案:

答案 0 :(得分:4)

您只能使用;在一行中分隔非复合语句;语法不允许使用分号分隔的非复合语句和复合语句。

相关语法规则如下:

stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE

;制作中的simple_stmt是允许使用分号分隔语句的唯一位置。有关详细信息,请参阅full Python grammar

答案 1 :(得分:0)

不是您确切问题的答案,但仍然可以帮助某人。 您实际上可以在shell中拆分命令行。

sh / bash / etc:

python -c 'import sys
for a in [1, 2, 3]: print a'

Windows cmd C:\>'More?'是cmd提示符,请不要输入):

C:\>python -c import sys^
More?
More? for a in [1, 2, 3]: print a