python subprocess

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# 专门用于执行系统命令
import subprocess

#call():执行命令,并返回执行状态
#ret = subprocess.call('ipconfig')

# Popen():
# 使用场景:1.将一个进程的执行输出作为另一个进程的输入
# 2.先进入到某个输入环境,然后再执行一系列的指令
# 参数:args:shell命令,可以是字符串,或者序列类型,如list,tuple。
# bufsize:缓冲区大小,可不用关心
# stdin,stdout,stderr:分别表示程序的标准输入,标准输出及标准错误
# shell:为False时,命令需要通过列表的方式传入,当shell为True时,可直接传入命令
# cwd:用于设置子进程的当前目录
# env:用于指定子进程的环境变量。如果env=None,则默认从父进程继承环境变量
# universal_newlines:不同系统的的换行符不同,当该参数设定为true时,则表示使用\n作为换行符

# 案例1:在D:/python 下创建一个hakuna的文件夹
#subprocess.Popen('mkdir hakuna',shell=True,cwd='D:/python')

#案例2:

# 这里在本机用3.6跑 会出错:TypeError: a bytes-like object is required, not 'str'
# 所以用bytes类型
sub = subprocess.Popen(["python"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
pp = 'print(33) \n'.encode()
qq = 'print(44) \n'.encode()
sub.stdin.write(pp)
sub.stdin.write(qq)
sub.stdin.close()

# out = sub.stdout.read().decode()
# sub.stdout.close()
# error = sub.stderr.read().decode()
# sub.stderr.close()
#
# print(out)
# print(error)

##上面获取输出的东西时,可以简化为communicate(),其内部仍然是调用以上代码
out_error_list = sub.communicate() ##获取到的是一个tuple
print(out_error_list[0].decode())

转载于:https://www.cnblogs.com/wuxinyan/p/8909469.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值