zoukankan      html  css  js  c++  java
  • (常用)subprocess模块 详情官方

    subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。
    另外subprocess还提供了一些管理标准流(standard stream)管道(pipe)的工具,从而在进程间使用文本通信
    #windows下:
    # dir | findstr 'test*'
    # dir | findstr 'txt$'
    在一些复杂场景中,我们需要将一个进程的执行输出作为另一个进程的输入。在另一些场景中,我们需要先进入到某个输入环境,然后再执行一系列的指令等。
    这个时候我们就需要使用到suprocess的Popen()方法。该方法有以下参数:
       args:shell命令,可以是字符串,或者序列类型,如list,tuple。
       bufsize:缓冲区大小,可不用关心
       stdin,stdout,stderr:分别表示程序的标准输入,标准输出及标准错误
       shell:参数为False时,命令需要通过列表的方式传入,当shell为True时,可直接传入命令.
       cwd:用于设置子进程的当前目录
       env:用于指定子进程的环境变量。如果env=None,则默认从父进程继承环境变量
       universal_newlines:不同系统的的换行符不同,当该参数设定为true时,则表示使用 作为换行符
    import subprocess
    res1=subprocess.Popen(r'dir C:UsersAdministratorPycharmProjects est函数备课',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    res=subprocess.Popen('findstr test*',shell=True,stdin=res1.stdout,stdout=subprocess.PIPE)
    print(res.stdout.read().decode('gbk')) #subprocess使用当前系统默认编码,得到结果为bytes类型,在windows下需要用gbk解码
    print(res.stderr.read().decode('gbk'))
  • 相关阅读:
    根据对象中某个元素进行排序
    Bootstrap 弹出框(Popover)插件
    echarts+bmap 去掉地图左下角的logo
    get提交参数中存在空格
    long类型的转换为正常时间格式遇到的问题
    jQuery validate使用过程中遇到的问题
    问题 G: 最长公共子串问题
    1567. 乘积为正数的最长子数组长度(dp)
    C. Parsa's Humongous Tree(树形dp)
    1558. 得到目标数组的最少函数调用次数
  • 原文地址:https://www.cnblogs.com/3sss-ss-s/p/9475548.html
Copyright © 2011-2022 走看看