使用python -c开关的长程序

6 投票
4 回答
4151 浏览
提问于 2025-04-16 03:40

我想用Python来做一些我之前用bash做的事情。请问可以用-c这个选项来运行比较长的程序吗,比如说一个包含两个语句的for循环?这样我就能像用bash或php一样,直接从命令行使用Python了。

谢谢。

补充说明:我不知道我怎么会漏掉这个,直接输入python -c '然后按回车就能实现我想做的事情。我试过很多不同的写法,还有一种用\的方式,但那不管用,所以我才问这个问题。

例如:

$python -c '
>print "x"
>for i in range(3):
>   print "y" '

这正是我想要的,虽然Rod的回答也不错。

4 个回答

3

在脚本中使用时,我觉得让Python从标准输入读取脚本会更好,像这样:

#!/bin/bash

python - arg1 arg2 <<END
import sys
print 'Arg:', sys.argv[1:]
END

这里使用了bash的HEREDOC语法。

5

你可以使用复合语句,用分号来分隔这些语句,比如:

python -c "for x in range(0,3) : print x; print x

那么输出结果就是:

0
0
1
1
2
2

可以查看 http://docs.python.org/reference/compound_stmts.html

8

如果你的底层命令行是bash,那就没问题了,因为你可以在多行中继续输入一个参数,只要你打开的'(引号)还没有关闭。例如:

$ python -c'for x in range(3):
>   if x!=1:
>     print x'
0
2
$

这里的>是bash的默认PS2,也就是“多行继续提示符”,和$(也叫PS1)区分开来,后者是正常的“开始输入命令”的提示符。

如果你不能使用这种多行继续输入的方式,那么多个嵌套的代码块(比如在循环中使用的if语句)可能会变得很麻烦。

撰写回答