Python 解释器调用 "-c" 和缩进问题

4 投票
2 回答
1010 浏览
提问于 2025-04-16 09:10

我想用“-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"

撰写回答