zoukankan      html  css  js  c++  java
  • subprocess模块详解

    1.import subprocess 

    简单点说,就是通过python来调用模块来执行操作系统的命令。

    我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程。

    在python程序中每发起一个命令就会打开打开一个新的窗口,然后把结果返回到你的python程序中。这就是python程序能够调用shell命令的原因。

    2.

    可以直接输入命令,系统会打开新的窗口。进程从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,返回结果。

    b = subprocess.run(["control"])
    

    stderr = subprocess.PIPE  stderr 是标准错误。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

    stdout = subprocess.PIPE  标准输出      

    PIPE  管道  

     a = subprocess.run(["cleanmgr"],stderr = subprocess.PIPE,stdout = subprocess.PIPE)
    

    a.renturncode 命令的返回状态。返回结果 不为0得话,会举出错误。

    a.args  查看运行的参数,如上面返回的就是cleanmgr。 

    检查命令返回状态,不是0得话会报错。

    a.check_returncode
    

    3.每个程序在内存里的数据都是独立的,不能互相访问。

    那么python的进程怎么得到输出数据的?

    python先接受一个参数,然后执行这个参数带来的命令。PIPE是一个管道,连接python程序和系统文件,文件通过这个桥梁可以间接把文件传输出来。

    下面这个程序的PIPE就是操作系统,操作系统打开文件,然后发送到python程序中,从而达到互相访问。

    架起来一个桥梁,文件会被copy到操作系统里,不会立即执行。

    a.stdout 直接得到传输出来的数据。

    后面如果加check = True 如果stderr返回不是0,则直接报错。

     a = subprocess.run(["cleanmgr"],stderr = subprocess.PIPE,stdout = subprocess.PIPE)
    

    如果想获得文件里的部分文件,则需要在参数里加入管道 |,并且不需要列表,而且后买你要加入一个shell = True。

    参数里有关到就不要用列表形式。

    后面加shell 是告诉subprocess 不需要再拼参数了,直接把参数发到shell里面。

    a = subprocess.run("control,|con,prec",stderr = subprocess.PIPE,stdout = subprocess.PIPE,shell = True)
    

      

      

      

     

  • 相关阅读:
    iscroll 使用及遇到的问题
    移动端web页面如何适配
    里面的div怎么撑开外面的div让高度自适应
    JavaScript 获取当前时间戳
    css样式 浏览器的读取顺序
    mouseover和mouseenter的区别
    【转】移动端input输入placeholder垂直不居中
    一张png图片 上面有多个图标,如何用CSS准确的知道其中某个图片的坐标
    JVM05——JVM类加载机制知多少
    【Java实用工具】——使用oshi获取主机信息
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8877074.html
Copyright © 2011-2022 走看看