首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python之Subprocess模块

如果由subprocess去执行系统命令的时候并不会让主进程去执行,而是主进程会开辟出一个子进程去执行,并不会影响到主进程的运行,主进程该干嘛就干嘛,那么又有个问题,大家都知道进程之间的内存空间是独立的...subprocess基本工作原理: ?...subprocess简单案例 import subprocess # 创建一个子进程去执行系统命令 obj=subprocess.Popen( 'ps -ef', # 执行的系统命令...(必须是字符串格式) shell=True, # 指定命令解释器来解释执行的这条命令 stdout=subprocess.PIPE, # 将执行的正确结果丢到管道(共享内存空间...,用于进程之间共享) stderr=subprocess.PIPE # 将执行的错误结果丢到另一个新的管道 ) ''' 当从任意一个管道,例如正确或者错误结果管道中获取值, ''' # 从正确管道中获取值

68310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python模块学习:subprocess模块详解

    subprocess.call(),subprocess.getoutput()等上面列出的其他函数来使用subprocess模块的功能;3.subprocess.run()、subprocess.call...()、subprocess.check_call()和subprocess.check_output()都是通过对subprocess.Popen的封装来实现的高级函数,因此如果我们需要更复杂功能时,可以通过...Popen.wait(timeout=None) 等待子进程结束,并返回状态码;如果在timeout指定的秒数之后进程还没有结束,将会抛出一个TimeoutExpired异常。...>>> >>> p1 = subprocess.Popen(['df', '-Th'], stdout=subprocess.PIPE)>>> p2 = subprocess.Popen(['grep'...当subprocess.call()、subprocess.check_call()、subprocess.check_output()和subprocess.run()这些高级函数无法满足需求时,我们可以使用

    2.3K40

    subprocess实用手册

    背景 python执行操作系统的命令,如python执行shell命令 subprocess模块主要用于创建子进程,并连接它们的输入、输出和错误管道,获取它们的返回状态。...操作 引用 python自带subprocess包,直接import引入即可 import subprocess 常用方法 需要注意2.X版本和3.X版本 3.X版本 推荐使用run方法,3.5版本才新增该方法...其值可以是subprocess.PIPE、subprocess.DEVNULL、一个已经存在的文件描述符、已经打开的文件对象或者None。subprocess.PIPE表示为子进程创建新的管道。...>>> subprocess.run("exit 1", shell=True, check=True) Traceback (most recent call last): ... subprocess.CalledProcessError...1 root root 1, 3 Jan 23 16:23 /dev/null\n') >>> subprocess.run("python --version", stdout=subprocess.PIPE

    1.1K20

    subprocess 使用总结

    最近在项目中有使用 subprocess 这个模块,它的功能主要是fork一个子进程,并且运行一个外部的程序。说白了就是可以用这个模块可以根据输入的字符串执行对应的系统 shell 指令。...subprocess模块中只定义了一个类: Popen。可以使用Popen来创建进程,并与进程进行复杂的交互。...subprocess.PIPE 表示一个可以被用于Popen的stdin 、stdout 和stderr 3个参数的特输值,表示需要创建一个新的管道。...subprocess.STDOUT 表示一个可以被用于 Popen 的 stderr 参数的输出值,表示子程序的标准错误汇合到标准输出。...Popen.wait(), 等待子进程结束。设置并返回returncode属性。 Popen.pid,获取子进程的进程ID。 Popen.returncode, 获取进程的返回值。

    1.9K30

    调用 subprocess 时小心 shell=True

    小心调用 subprocess,避免因 shell=True 而命令行解析错误 Python 中的 subprocess 模块可以轻松实现执行外部命令和进程的功能。...但是在使用 subprocess 调用复杂命令时,有一个容易犯但影响比较大的错误 - 使用shell=True参数,导致命令行解析错误,子进程执行失败。..." subprocess.call(cmd, shell=True) 执行后,这个命令同样会解析失败,因为管道符号 | 被 shell 作为字符串传递,而不是真实的管道。...总结 综上,调用 subprocess 执行复杂命令时,如果不必要,最好避免使用 shell=True。直接传入命令列表,可以最大限度避免命令行解析错误的问题。...记录这个教训,在将来调用 subprocess 时多加注意,可以避免很多定制错误和调试时间,让代码更稳定。controllers 和 timeframe 数据结构。

    1K20

    解决subprocess.CalledProcessError: Command ‘‘

    的subprocess模块执行外部命令时,有时候会遇到​​CalledProcessError​​的异常,这个异常表示执行的命令返回一个非零的退出状态码。...可以使用wait()方法等待子进程完成。Popen类还提供了许多其他方法和属性,例如kill()用于终止子进程,poll()用于检查子进程是否结束等。...subprocess模块也提供了一些其他函数和常量,用于设置和处理子进程的其他参数和属性,例如设置执行路径、设置环境变量、设置超时时间等。...使用subprocess模块可以方便地调用外部程序、执行系统命令、进行并行处理等。它在很多场景中都非常有用,例如执行外部命令、调用系统工具、进行系统管理等。...然而,由于涉及到操作系统的底层调用,使用subprocess模块时需要注意安全性、错误处理和兼容性,以确保程序的稳定性和可靠性。

    1.3K60

    python模块--subprocess

    该模块拥有多个方法,具体如下: subprocess.call() 直接打印系统命令的执行结果,如果执行成功,返回状态码为0,否则为1,例如: #执行成功 import subprocess CALL1...直接打印系统命令的执行结果,使用方法与subprocess.call()相同,只不过该函数会检测返回状态码,如果为1,则会抛出subprocess.CalledProcessError错误,例如: import... subprocess # 执行成功 # CHECK_CALL1 = subprocess.check_call('ping 127.0.0.1 -n 1',shell=True) # print(CHECK_CALL1...错误,例如: import subprocess #执行成功 CHECK_OUTPUT1 = subprocess.check_output('ping 127.0.0.1 -n 1',shell=True...=subprocess.PIPE) STDOUT2 = POPEN2.stdout # print(str(STDOUT2.read(),'gbk')) POPEN3 = subprocess.Popen

    73610
    领券
    首页
    学习
    活动
    专区
    圈层
    工具
    MCP广场