zoukankan      html  css  js  c++  java
  • (5)subprocess模块(执行系统命令)

    这个模块的主要用途就是执行系统命令

    什么是进程

    一个程序运行起来了就是一个进程

    但是程序本身不是进程,程序是一对代码而已

    所以进程就是一个抽象的概念,就是程序运行起来的一个过程

    进程和进程之间是相互独立的,互不影响

    如何理解子进程和父进程

    抽象的说一个QQ程序是一个父进程,word就是一个子进程,两个互不干预,当然这只是一个比喻

    subprocess模块的用途

    让父进程从管道内获取子进程运行的结果

    调用格式(这个模块的调用时一个固定的格式)

    import subprocess

    obj=subprocess.Popen(

       'tasklasdfist', #第一个参数是一个字符串形式的命令

       shell=True, #第二个参数是调用命令解释器(如调用cmd)

       stdout=subprocess.PIPE, #第三个参数stdout是指标准输出,输出的对象就是subrocess.PIPE(管道)

       stderr=subprocess.PIPE   #第四个参数stderr是指错误输出,输出的对象就是subrocess.PIPE(管道)

    )

    res=obj.stdout.read()  #从正确管道内读取结果 (obj是一个特殊的对象,这个特殊的对象下面可以调用一个srdout(对应的就是正确的管道)下调用一个read
    print(res.decode('gbk'))  #根据系统的编码进行解码读取
    res=obj.stderr.read() #这是从错误管道内获取结果
    print(res.decode('gbk'))

    PS:管道的概念,什么是管道,可以想象成生活中的管道,作用就是因为进程和进程之间是相互隔离的,无法传播数据,所以用管道可以把子进程和父进程关联起来

    PS:管道内读取的结果是以系统的编码格式返回的二进制字符,所以在打印时候需要根据系统的编码进行解码

  • 相关阅读:
    【装机知识】内存条知识总结
    【装机知识】主板知识整理
    【装机知识】CPU知识整理
    SHELL 学历笔记
    tmux 会话恢复(no sessions)
    数据库客户端神器(mycli/pgcli/iredis)
    golang编写二叉树
    编译安装带lua 的 vim 编辑器
    linux 下vim 开发环境配置(通用所有编程语言)
    mac 下安装mysql
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10072837.html
Copyright © 2011-2022 走看看