示例 - 任何bash关键字(例如else
或in
)也会导致此问题:
$ python -c 'import sys;for p in sys.path:print p'
File "<string>", line 1
import sys;for p in sys.path:print p
^
SyntaxError: invalid syntax
双引号无法修复它。
答案 0 :(得分:6)
这与for
是Bash关键字的事实无关;它只是那个
import sys;for p in sys.path:print p
是无效的Python语法。如果您在没有参数的情况下运行python
,然后在提示符处键入该错误,则会收到相同的错误。
您可以通过添加换行符来修复它:
import sys
for p in sys.path:print p
你可以在你的Bash命令中写下这个:
python -c ' import sys
for p in sys.path:print p
'
或者这个:
python -c $'import sys\nfor p in sys.path:print p'
(其中$'...'
是一种Bash语法,允许在字符串中使用类似C的转义序列,例如换行符为\n
。
答案 1 :(得分:1)
请尝试以下
python -c "exec(\"import sys;\\nfor p in sys.path:print p\")"
答案 2 :(得分:1)
这是另一种方法....更直接
python -c "import sys; print '\n'.join(sys.path)"
答案 3 :(得分:0)
如果分号和compound_stmt
关键字不相邻,则有效:
# instead of '; for'
python -c 'import sys; print [p for p in sys.path]'
或
# instead of '; if'
python -c "x=1; print x if x>0 else ''"