使用python -c开关的长程序

时间:2010-09-03 15:05:01

标签: python command-line

我想使用python来处理我一直在使用bash做的事情。是否可以将-c开关用于长程序,例如带有两个语句的for循环?这将让我直接从命令行使用python,就像bash或php。

感谢。

编辑:不知道我是怎么错过它的,只需要做一个python -c'然后按回车做我想做的事情。我尝试了很多变化,一个使用了\但是没有用,所以我问了这个问题。 e.g。

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

做我想做的事,虽然罗德的回答看起来也不错。

4 个答案:

答案 0 :(得分:6)

如果您的底层shell是bash,没问题,因为如果打开的'(引用)尚未关闭,您可以跨多行继续参数 - 例如:

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

>是bash的默认PS2,“多行继续提示”,区别于$,AKA PS1,正常“开始输入命令“提示。

如果你不能使用这样的多行连续,那么多个嵌套的块语句(例如循环中的if)可能会出现问题。

答案 1 :(得分: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

答案 2 :(得分:3)

在脚本中使用时,我认为让python从标准输入中读取脚本会更好,如下所示:

#!/bin/bash

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

这使用bash的HEREDOC语法。

答案 3 :(得分:1)

如果您从bash脚本运行,只需使用引号:

#!/bin/sh

python -c 'import os
for i in range(3):
    for j in range(3):
        print i*j
'

echo "done"

否则,如果使用cmd行,请使用;分号分隔语句,或再次使用单引号括起来到下一行:

python -c 'import os
>    for i in range(3):
>        for j in range(3):
>            print i*j
>    '