Python sh模块--------替换subprocess的利器
2024-10-19 11:49:53
官方文档有句话"allows you to call any program",并且:
helps you write shell scripts in Python by giving you the good features of Bash
第一句话助你在Python中轻松调用自己的程序,第二句则给你机会和Shell这种土豪交朋友
㈠ 调用系统的程序
[python]
>>> import sh
>>> print(sh.ls('/home/mysql'))
cdio_bak.sql mysql-5.5.16.tar.gz
mm percona-xtrabackup-2.1.4-656-Linux-i686.tar.gz
mysql percona-xtrabackup-2.1.4-Linux-i686
mysql-5.5.16 startmysql.sh
㈡ 调用自己的程序
[python]
>>> import sh
>>> r=sh.Command('/root/dd.py')
>>> r()
hello,DBA
㈢ bake命令参数
[python]
>>> import sh
>>> du=sh.du.bake('-shc')
>>> print (du('/home/mysql'))
1.1G /home/mysql
1.1G 总计
㈣ glob列出文件
[python]
>>> import sh
>>> list=sh.glob('/root/mm/*')
>>> print list
['/root/mm/Backup', '/root/mm/Usplash', '/root/mm/AWN', '/root/mm/Wallpapers', '/root/mm/GRUB', '/root/mm/Mozilla']
㈤ 管道
[python]
>>> print(sh.sort(sh.du(sh.glob('*'),'-shc'),'-rn'))
712K distribute-0.6.49.tar.gz
672K setuptools-1.1.5.tar.gz
548K get-pip.py
管道是有序的,默认由内而外,但如果需要并行呢?加个_piped=True
[python]
>>> for line in sh.tr(sh.tail("-f", "/home/mysql/mysql/log/alert.log", _piped=True), "[:upper:]", "[:lower:]", _iter=True):
... print line
...
innodb: doublewrite buffer not found: creating new
innodb: doublewrite buffer created
innodb: 127 rollback segment(s) active.
innodb: creating foreign key constraint system tables
innodb: foreign key constraint system tables created
最新文章
- [LeetCode] Valid Phone Numbers 验证电话号码
- 【Thinking in Java】Java Callable的使用
- 如何判断js中对象的类型
- U盘启动笔记本无法安装Win7问题和解决
- JS实现图片上传预览效果:方法一
- 栈的的链式实例LinkStack实现
- Windbg命令
- Android工程师必会做的20道题
- Myeclipse新建 配置Hibernate
- Java-面向对象总结
- 用于文件系统的C库函数
- Intellij idea破解办法
- Sagit.Framework For IOS 开发框架入门教程6:网络请求STHttp
- python 有参装饰器与迭代器
- MongoDB学习总结(二)
- 转载:abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?
- 关于Strategy和State设计模式
- VC字符串处理整理
- Alpha冲刺(1/10)——追光的人
- 【BZOJ】1299: [LLH邀请赛]巧克力棒