Python 解释器调用 "-c" 和缩进问题
我想用“-c”这个参数来调用Python,这样我就可以轻松运行一些任意的Python代码,比如这样:
python.exe -c "for idx in range(10): print idx"
这段代码在我的批处理文件中运行得很好,但当我想做更复杂的事情时,就遇到了一些问题。
考虑以下这段Python代码:
foo = 'bar'
for idx in range(10):
print idx
这段代码会在输出中显示0到9。不过,如果我把它压缩成一行,用分号来分隔,就变成了:
foo = 'bar';for idx in range(10): print idx
然后我尝试用python.exe -c
来运行它,但却出现了语法错误:
C:\Python>python.exe -c "foo = 'bar';for idx in range(10): print idx"
File "<string>", line 1
foo = 'bar';for idx in range(10): print idx
^
SyntaxError: invalid syntax
有没有人知道我怎么才能在不切换到单独的.py文件的情况下使用这个?
我是在.cmd批处理文件中通过调用方法运行的,像这样:
call python.exe -c "blah blah"
但还是出现了同样的错误。
2 个回答
2
用换行符来分隔语句。这就是我在命令行中输入的方式:
$ python -c "foo = 'bar'
for idx in range(10): print idx"
你写的代码不行是因为分号的优先级比冒号高,所以会搞混。相比之下,这样写就可以正常工作,比如:
$ python -c "foo = 'bar'; print foo"
3
你需要把命令字符串作为多行参数输入。在Linux系统中,这很简单,只需要按下回车键就可以了,比如说(注意,bash会自动加上>
这些字符,我并不需要自己输入):
$ python -c "foo = 'bar'
> for idx in range(10):
> print idx"
不过在Windows系统中,你需要在按回车之前先输入^
这个符号,并留一个空行,这样才能得到换行符,比如说(More?
是cmd
自动加上的)
C:\> python.exe -c "foo = 'bar'^
More?
More? for idx in range(10):^
More?
More? print idx"