当前位置:编程学习 > python >>

Python sh库学习 上篇

官方文档有句话"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/Wall易做图s', '/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  
 
 
 
By DBA_WaterBin
2013-09-30
Good Luck
补充:Web开发 , Python ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,