• 【python学习】基础篇-常用模块-subprocess模块:创建和管理子进程


    在Python中,可以使用subprocess模块来创建和管理子进程。以下是一些常用的方法:

    subprocess.run()
     运行一个新的子进程,并等待其完成。可以传入命令和参数列表,还可以设置环境变量、工作目录等选项。返回一个CompletedProcess对象,包含子进程的返回码、输出和错误信息等。
    
    subprocess.Popen()
     创建一个新的子进程,但不等待其完成。可以传入命令和参数列表,还可以设置环境变量、工作目录等选项。返回一个Popen对象,可以通过该对象的方法来控制子进程的输入、输出、错误流等。
    
    subprocess.call()
     运行一个新的子进程,并等待其完成。与subprocess.run()类似,但只能传入一个命令和参数列表。返回子进程的返回码。
    
    subprocess.check_output()
     运行一个新的子进程,并等待其完成。将子进程的标准输出作为字节串返回。如果子进程返回非零值,则会抛出CalledProcessError异常。
    
    subprocess.check_call()
     运行一个新的子进程,并等待其完成。如果子进程返回非零值,则会抛出CalledProcessError异常
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    下面是一个简单的示例代码,演示了如何使用subprocess模块创建子进程并执行命令:

    import subprocess
    
    # 运行一个新的子进程,并等待其完成
    result = subprocess.run(['ls', '-l'], capture_output=True)
    print(result.stdout.decode())
    
    # 创建一个新的子进程,但不等待其完成
    p = subprocess.Popen(['ping', 'www.baidu.com'])
    
    # 控制子进程的输入、输出、错误流等
    p.stdin.write(b'hello\n')
    p.stdin.close()
    output = p.stdout.readline()
    print(output.decode())
    
    # 检查子进程的返回码
    return_code = subprocess.call(['echo', 'hello'])
    print(return_code)
    
    # 获取子进程的标准输出
    output = subprocess.check_output(['echo', 'hello'])
    print(output.decode())
    
    # 检查子进程的返回码
    return_code = subprocess.check_call(['echo', 'hello'])
    print(return_code)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这个示例中,我们首先导入了subprocess模块。然后分别使用了subprocess.run()、subprocess.Popen()、subprocess.call()、subprocess.check_output()和subprocess.check_call()方法来创建和管理子进程,并执行了一些命令。

  • 相关阅读:
    C++模板编程(10)---更深入的基础技术:模板参数(Template Parameter)
    包管理工具--》发布一个自己的npm包
    泊松分布简要介绍
    解决 “编译需要TBBConfig.cmake,但TBB 2020及older版本不生成.cmake文件”的问题
    StringUtils 工具类常用方法汇总 1(判空、转换、移除、替换、反转)
    centos7安装mysql5.7
    HttpClient 在vivo内销浏览器的高并发实践优化
    【Python】第四课 列表,元组和字符串的使用
    Python例题练习1
    java项目开发经验总结
  • 原文地址:https://blog.csdn.net/weixin_42133116/article/details/134537486