python subprocess调用外部进程

Popen方法

import subprocess, sys

p1 = subprocess.Popen('ping 127.0.0.1'.split(),
                      stdin=subprocess.PIPE,
                      stdout=subprocess.PIPE,
                      stderr=subprocess.PIPE)
# Popen构造一个新进程,启动其它程序,第一个参数由元组或列表提供,包括了命令和命令的参数。
# stdin、stdout 输入输出的标准。

# p1.wait()       # 如果此处没有调用wait()方法,那 下面的 print(11111)是在p1执行时,马上接着执行的。
# print(11111)    # 如果调用了 wait()方法,则在p1结束后,再运行 print()。

output, err = p1.communicate()       # communicate()控制输入输出,结果返回一个元组(stdout, stderr)。
sys_encode = sys.stdout.encoding   # 获取操作系统的默认编码。
print('p1', output.decode(sys_encode))    # 获取输出的内容,因为是字节码,所以得得重新解码。
print('Exit code:', p1.returncode)      # p.returncode ==》p的退出状态码。

p = subprocess.Popen('ping 126.com'.split())
print(p.poll())  # poll 查看进程是否还在运行,如果还在运行返回None。如果正常结束返回0,错误中止通常为1。
print(p.wait())  # 等待进程结束,可以传入一个timeout的参数=等待的时长。返回进程的结束状态码。和join类似。

打开其他程序
p = subprocess.Popen(['程序A', '文件B'])   # 即用 程序A 来打开 文件B。
p = subprocess.Popen(['start', '文件B'], shell=True)    # 调用系统默认程序打开 文件B, start是windows的shell命令,其他系统有open,see。

getoutput、getstatusoutput、call方法

p2 = subprocess.getoutput('ping 127.0.0.1')
# getoutput 的参数是一个字符串,可以表示一个完整的shell命令。在shell中打开命令,并获取它的输出。
print('p2', p2)  # 返回值也是字符串。


p3 = subprocess.getstatusoutput('ping 127.0.0.1')
# getstatusoutput 获取状态码,和输出内容。
print('p3:状态码为{}, 内容为:{}'.format(p3[0], p3[1]))

p4 = subprocess.call('ping 127.0.0.1')  # 结果打印到控制台上
print('p4', p4)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值