shell和Python生娃了!太牛了!
诗书塞外 Python程序员
Python和Shell交互是系统管理员绕不过去的坎儿。一般来说,我们会通过Subprocess、Popen或者Command模块执行一条Shell命令或脚本,然后通过返回的标准输出和错误输出来得到结果。这是很教科书的做法,可行但不直观。Pythoner的价值观都是不仅要可行,还要简单直观才好。那有没有一种办法让Python和Shell的代码能够简单直观地融合在一起,各自发挥所长,出色地完成任务?
有, 因为Shell和Python在助产婆lamerman的帮助下,生了一个娃,叫shellpy 。这个小家伙能够实现我们想要的功能。(姓跟了shell,看来shell是爸爸,python是妈妈啊~)
项目地址
https://github测试数据/lamerman/shellpy
使用方法
shellpy的主体是Python,毕竟Python是一门完整的通用语言,而Shell不是。就是说,总体的编码和Python是一样的,想要嵌入Shell命令的时候,在命令前面加一个 ` (Tab上面那个键,一个右点号)。像这样
`ls -l`
或者这样
`ls -l
也可以写多行命令
` echo test > test.txt cat test.txt `
或者一个很长的行
`echo This is a very long line
不可缺少的,你也可以获得命令的返回
result = `ls -l
这个结果是一个Result类型或者InteractiveResult类型。我们先从简单的Result开始讲起。你可以这样获取到一个命令的返回码
result = `ls -l print result.returncode
这样获取标准输入输出的文本
result = `ls -l result_text = result.stdout result_error = result.stderr
或者逐行遍历标准输出的文本
result = `ls -l for line in result: print line.upper()
等等。
语法糖
也会有一些语法糖,比如空值判断的语法糖:
result = `ls -l if result: print 'Return code for ls -l was 0'
然后是获取标准输出的语法糖
result = `ls -l print result
与Python代码集成,以及代码重用
一个shellpy文件内容如下:
import os.path `mkdir /tmp/mydir os.path.exists('/tmp/mydir') # True
这很好理解,主体是Python,嵌入shell代码。需要注意的是,这个文件的扩展名不是.py,而是.spy。
shellpy还有包的概念,包的概念和python包的概念是完全一样的,结构如下:
ls common/ common.spy __init__.spy
唯一的区别就是.py都变成了.spy。这样的包还能够直接被Python引用,就像这样:
from common测试数据mon import common_func
是不是很神奇?
查看更多关于shell和Python生娃了!太牛了!的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did164526