python 调用linux命令-Python调用Linux bash命令

import subprocess as sup # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了

# 3.5版本之后官方推荐使用sup.run()

sup.run("ls -l", shell=True) # 如果参数args是字符串, shell要设置为True

sup.run(("ls", "-l")) # 推荐args为一个序列, list/tuple, 元组效率高

# 命令有返回值, 字符串类型(下同)

# sup.run(), call()等方法都是基于sup.Popen类的封装, run()如果不够用可以自己定义此类

pp = Popen(("ls", "-l"), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8") # 不输出到控制台

p2 = subprocess.Popen(['grep', 'data'], stdin=pp.stdout, stdout=subprocess.PIPE) # 可以将上一个命令的输出作为下一个命令的输入, 不需要|(管道符)

try:

pp.wait(timeout=1) # 等待1秒, 如果子进程没结束会报错(pp类是新开一个进程, 并在子进程中执行bash命令)

pp.kill() # 命令执行结束杀死子进程

# 有些阻塞的命令不要设置超时时间更不要杀死, 比如: 命令行python, 但是这样的命令不用的时候, 还是要杀掉子进程

except:

pass

print(pp.stdout.read()) # 输出命令查询结果

# 着重说一下 pp.communicate() # 另一种输出结果的方式, 还可以再传入命令input参数, 也可以再设置超时时间timeout

out, err = pp.communicate() # 如果是像python这样的阻塞命令, 可以用input="print(1)", 再执行python代码

print(out) # 输出bash命令结果, 字符串类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值