当前位置: 首页 > news >正文

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

相关文章:

  • linux笔记4.0
  • Oracle毙掉JavaOne
  • node入门
  • HTML5+CSS3+jQuery Mobile轻松构造APP与移动网站 (陈婉凌) 中文pdf扫描版
  • 拓展jquery js动态添加html代码 初始化数据
  • 几种编码格式
  • “Head First 设计模式“ :适配器模式
  • 一个披萨电影夜,你到底泄露了多少个人数据?
  • web项目中web.xml的作用
  • 【特征选择】过滤式特征选择法
  • 学习在.NET Core中使用RabbitMQ进行消息传递之持久化(二)
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • Git工程实践(一)巧用commit message
  • 使用渲染纹理的制作摄像头
  • 如何实现文件上传 - JavaWeb
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • CSS魔法堂:Absolute Positioning就这个样
  • Making An Indicator With Pure CSS
  • SOFAMosn配置模型
  • SpringBoot 实战 (三) | 配置文件详解
  • SpriteKit 技巧之添加背景图片
  • TCP拥塞控制
  • Vim 折腾记
  • 关于使用markdown的方法(引自CSDN教程)
  • 普通函数和构造函数的区别
  • 浅谈web中前端模板引擎的使用
  • 算法系列——算法入门之递归分而治之思想的实现
  • Java性能优化之JVM GC(垃圾回收机制)
  • Python 之网络式编程
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​水经微图Web1.5.0版即将上线
  • # 数据结构
  • (16)Reactor的测试——响应式Spring的道法术器
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三分钟)速览传统边缘检测算子
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • ******之网络***——物理***
  • .apk 成为历史!
  • .net core 6 集成和使用 mongodb
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net(C#)中String.Format如何使用
  • .net解析传过来的xml_DOM4J解析XML文件
  • .net流程开发平台的一些难点(1)
  • .NET企业级应用架构设计系列之结尾篇
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @Repository 注解
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决