zoukankan      html  css  js  c++  java
  • python中subprocess模块

    subprocess  模块

    subprocess称之为子进程,进程是一个正在进行的程序

    子进程是由另一个正在运行的程序启动的程序,例如QQ聊天点击一个链接,打开了浏览器,那么浏览器称之为QQ的子进程

    为什么要子进程?

    当我们有个一任务需要处理,而自己无法处理,需要其他程序处理

    import os
    ​
    os.system(r'"D:ProgramFiles(x86)TencentQQBinQQScLauncher.exe"')
    res = os.system("dir")
    print(res)
    ​
    #在os模块中,os.system在执行系统指令时,也可以命令操作系统启动某个程序
    ​
    ​
    #os.system和subprocess的区别
    os.system在执行的时候,直接将结果输出到控制台,如果我们要获取了执行结果,就无能为力了
    subprocess不仅可以启动子进程,还能与子进程进行交互
    ​
    ​
    #subprocess的具体用法
    import subprocess
    p = subprocess.Popen('dir', shell=True, stdout=subprocess.PIPE)
    print(p.stdout.read())
    ​
    #上述代码是启动了一个dir的子程序,并将结果输出到指定的管道位置
    dir        表示要执行的命令
    ​
    shell      表示dir是一个命令
    ​
    stdout     指定输出的管道位置
    ​
    #什么是管道?
    #管道类似于生活中的水管,从一端给入介质,在另一端将收到同样的介质。在程序中,数据就相当于介质,管道的作用就是从一个进程中把数据传输到另一个进程
    #本质就是读写同一个文件
    #eg:
    p1 = subprocess.Popen('tasklist', 
                          shell=True,
                          stdout=subprocess.PIPE)
    p2 = subprocess.Popen('findstr  cmd',#要执行的指令  cmd是参数指令
                          shell=True, #第一个参数是否是指令
                          stdin=p1.stdout, #指定输入管道
                          stdout=subprocess.PIPE, #指定输出管道
                          stderr=subprocess.PIPE)  #指定错误管道,当进程出错时,可在错误管道获取结果
    # 读取p2进程的结果
    print(p2.stdout.read())
    print(p2.stderr.read().decode("GBK"))
    #在p1中是启动一个tasklist的子进程,指定输出结果到管道中
    #p2是启动一个findstr的子进程,将p1进程结果作为p2进程输入

     

    1.当需要在python程序中启动子进程时,如果需要数据交互就要用subprocess
    2.当不需要数据交互时,可以使用os.system
  • 相关阅读:
    CSS 使用技巧
    CSS display
    CSS float
    .NET自动识别HttpWebResponse的编码及是否压缩
    通用权限管理系统基类中数据库的连接
    通用权限底层实现的记录软删除及表中应包含的基本字段
    最好用的兼容多种数据库通用高效的大数据分页功能
    水平权限漏洞的修复方案
    通用权限管理系统菜单展示的一个技巧
    IE11下用forms身份验证的问题
  • 原文地址:https://www.cnblogs.com/5j421/p/10098140.html
Copyright © 2011-2022 走看看