范例:
# file: say.py
import sys
txt = sys.argv[1]
print "Hello %s!"%(txt)
1
2
3
4
importsys
txt=sys.argv[1]
print"Hello %s!"%(txt)
那么我就可以在Linux或Mac的终端上直接输入:
python say.py World
输出结果就会是:
Hello World!
这样就确保了,在终端调用上的直观与可编程性。
这样,我就不用必须在别的python语言里面调用python了,而能够直接在shell上跟其它处理程序直接连接。
接着
file: say2.py
import sys
for line in sys.stdin.readlines():
print "Hello %s!"%(line.strip())
1
2
3
4
importsys
forlineinsys.stdin.readlines():
print"Hello %s!"%(line.strip())
那么我就可以在终端这么干:echo -e 'water\nmaomaol\nkenbing\nlonger\nchuang'|python say3.py
输出就会是:
Hello water!
Hello maomaol!
Hello kenbing!
Hello longer!
Hello chuang!
1
2
3
4
5
6
Hellowater!
Hellomaomaol!
Hellokenbing!
Hellolonger!
Hellochuang!
再进一步,我可以把前面的内容写成文件,比如写成一个这样的文件:
names.txt
water
maomaol
kenbing
longer
chuang
1
2
3
4
5
6
water
maomaol
kenbing
longer
chuang
就可以直接更便捷地做处理:
cat names.txt | python say2.py这样,我就用cat命令把文本打印出来,然后输出到say2.py上去了。
输出一样的结果。
cat names.txt | python say2.py > result.txt
就这样,结果就保存到了result.txt这个文件里了。
意义:
在终端上我可以随意地组合他和其它程序,作为一个中间处理模块。
而且,他可以如此地简单便捷,一些简单的脚本只需要cat一下马上就能明白是什么意思。
一个表达式一行代码,代码块有一致的标准的缩进,标准的命名方式,简练的语言,支持注释……
别的程序要访问或调用,很简单,一个命令把指定数据输入到这里就好,然后要怎么拼接怎么拼接;
周期性地处理也没问题,输出到文件,等待别的程序调用。
系统脚本上:
比SHELL多了很多数学及字符串处理能力,还多了很多很好用的迭代方法,还多了很多的原生的数据结构;
比PERL多了很要命的代码可读性。
比起ruby和nodejs,他基本所有机器都预装,而且已经经历了时间的考验。虽然,将来的确会有被这俩货代替的可能性。
比起C/C++,他多了一个终端、甚至像ipython这样的加强版神器终端,可以边调试代码边把没问题的代码写进文件。而且,源码即可执行。