python sh_Python sh库学习

本文介绍了Python的sh库,通过它可以在Python中方便地调用系统程序和自己的脚本,包括如何执行系统命令、运行自定义Python程序、设置命令参数、使用glob列出文件和实现管道操作。示例展示了du、ls、sort、glob和tail等命令的使用方法。
摘要由CSDN通过智能技术生成

官方文档有句话"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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值