python和shell哪个方便_shell和Python生娃了!太牛了!

Python和Shell交互是系统管理员绕不过去的坎儿。一般来说,我们会通过Subprocess、Popen或者Command模块执行一条Shell命令或脚本,然后通过返回的标准输出和错误输出来得到结果。这是很教科书的做法,可行但不直观。Pythoner的价值观都是不仅要可行,还要简单直观才好。那有没有一种办法让Python和Shell的代码能够简单直观地融合在一起,各自发挥所长,出色地完成任务?

有,因为Shell和Python在助产婆lamerman的帮助下,生了一个娃,叫shellpy。这个小家伙能够实现我们想要的功能。(姓跟了shell,看来shell是爸爸,python是妈妈啊~)

项目地址

https://github.com/lamerman/shellpy

使用方法

shellpy的主体是Python,毕竟Python是一门完整的通用语言,而Shell不是。就是说,总体的编码和Python是一样的,想要嵌入Shell命令的时候,在命令前面加一个 ` (Tab上面那个键,一个右点号)。像这样`ls -l`

或者这样`ls -l

也可以写多行命令`echo test > test.txtcat test.txt`

或者一个很长的行`echo This is \ a very long \ line

不可缺少的,你也可以获得命令的返回result = `ls -l

这个结果是一个Result类型或者InteractiveResult类型。我们先从简单的Result开始讲起。你可以这样获取到一个命令的返回码result = `ls -lprint result.returncode

这样获取标准输入输出的文本result = `ls -lresult_text = result.stdoutresult_error = result.stderr

或者逐行遍历标准输出的文本result = `ls -lfor line in result: print line.upper()

等等。

语法糖

也会有一些语法糖,比如空值判断的语法糖:result = `ls -lif result: print 'Return code for ls -l was 0'

然后是获取标准输出的语法糖result = `ls -lprint result

与Python代码集成,以及代码重用

一个shellpy文件内容如下:import os.path`mkdir /tmp/mydiros.path.exists('/tmp/mydir') # True

这很好理解,主体是Python,嵌入shell代码。需要注意的是,这个文件的扩展名不是.py,而是.spy。

shellpy还有包的概念,包的概念和python包的概念是完全一样的,结构如下:ls common/common.spy __init__.spy

唯一的区别就是.py都变成了.spy。这样的包还能够直接被Python引用,就像这样:from common.common import common_func是不是很神奇?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值