Python subprocess模块常见用法分析

Python subprocess模块常见用法分析

什么是subprocess模块

Python 的 subprocess 模块可以让我们在 Python 操作系统的命令行 Shell 上运行任何外部命令(Bash, Python, Perl, Grep 等)。subprocess 可以取代 os.system() 和 os.spawn*() 方法。

使用subprocess模块的3种方式

1. subprocess.call()

通过 subprocess.call() 方法启动一个外部程序。

举个例子,如下所示:

import subprocess

subprocess.call(["ls", "-l"])

执行结果会直接输出在终端上。

2. subprocess.run()

subprocess.run() 方法用于子进程创建和控制。其输入、输出以及错误的处理都是高度可控且灵活的。

举个例子:

import subprocess

result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)

print(result.stdout.decode('utf-8'))

执行结果会在程序中输出。

3. subprocess.Popen()

subprocess.Popen() 方法在 Unix 和 Windows 上都有相同的行为。它启动一个新的进程并为其返回一个 Popen 对象。可以通过该 Popen 对象的方法和属性访问进程的 I/O 管道。

举个例子:

import subprocess

p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)

print(p.communicate()[0].decode('utf-8'))

执行结果将会输出在终端上。

subprocess模块中一些常用的函数

Os.fork()

os.fork() 是一个 Python 实现 UNIX fork() 函数的接口,它并不直接创建子进程,而是创建了一个与当前 Python 解释器完全一样的进程。这个新的进程只是不同于父进程的 pid。由于调用 os.fork() 会返回所在进程(父进程和子进程)的 pid(0 是子进程,否则则是父进程),因此可以通过判断返回的 pid 的值来确定是父进程还是子进程。如果是子进程,你只需要调用 os.exec*() 函数来运行其他代码。

Os.execv()

os.execv(path, args) 用来执行一个可执行程序,执行参数以数组的方式传递。

import os

# 表示要执行的程序
program = '/bin/ls'

# 表示传给程序 ls 的一个参数。这个参数使 ls 以“标准格式”列出所有文件和目录。
option = '-la'

os.execv(program, [program, option])

总结

到这里,subprocess 模块的常见用法和关键知识点已经详细介绍完毕。它在 Python 系统编程中非常常用和非常重要,大家可以通过上面的示例尝试自己编写并运行一遍。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python subprocess模块常见用法分析 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • jquery的ajax异步请求接收返回json数据实例

    jQuery的Ajax异步请求接收返回JSON数据实例详解 jQuery是一种流行的JavaScript库,可以用于开发各种Web应用程序。本文将提供一个完整的攻略,包括如何使用jQuery的Ajax异步请求接收返回JSON数据实例,以及如何使用示例代码内容。 开发环境 在开始开发前,请确保已经安装了以下软件: jQuery Ajax异步请求 在开始使用Aj…

    云计算 2023年5月16日
    00
  • 数据线哪个品牌质量好 数据线排行榜前十名

    数据线哪个品牌质量好 数据线排行榜前十名 数据线是连接电脑和移动设备的重要配件,质量好的数据线可以提高数据传输速度和稳定性。本文将介绍数据线哪个品牌质量好以及数据线排行榜前十名,并提供示例说明。 数据线哪个品牌质量好 目前市面上有很多数据线品牌,其中一些品牌的质量比较好。以下是几个质量较好的数据线品牌: Anker Belkin Ugreen Aukey B…

    云计算 2023年5月16日
    00
  • ASP.NET MVC使用区域(Area)功能

    下面是关于“ASP.NET MVC使用区域(Area)功能”的完整攻略,包含两个示例说明。 简介 ASP.NET MVC中的区域(Area)是一种组织控制器和视图的方式,可以将应用程序分成多个逻辑部分。本文将详细讲解如何在ASP.NET MVC应用中使用区域功能。 使用区域功能 以下是在ASP.NET MVC应用中使用区域功能的步骤: 在ASP.NET MV…

    云计算 2023年5月16日
    00
  • IDC将因“云”而亡?2017传统IDC商何去何从?

    IDC将因“云”而亡?2017传统IDC商何去何从? 随着云计算技术的发展,越来越多的企业开始将其IT基础设施迁移到云端,这给传统的IDC商带来了巨大的挑战。本文将探讨IDC商在云计算时代的发展趋势和应对策略。 IDC商的困境 传统的IDC商主要提供数据中心托管、网络接入和IT设备租赁等服务,这些服务在云计算时代已经逐渐被云服务所替代。云服务提供商可以提供更…

    云计算 2023年5月16日
    00
  • 干货:区块链相关疑问解析

    干货:区块链相关疑问解析 区块链是一种去中心化的分布式账本技术,近年来备受关注。本文将对区块链相关的疑问进行解析,包括什么是区块链、区块链的优势、区块链的应用场景等。 1. 什么是区块链? 区块链是一种去中心化的分布式账本技术,它将数据存储在多个节点上,每个节点都有完整的账本副本。每个区块包含了一定数量的交易记录,这些交易记录被加密后形成一个哈希值,并与前一…

    云计算 2023年5月16日
    00
  • 更安全、更低耗的微服务架构改造之道

    摘要:微服务改造是政企客户云原生演进的重头戏,但如何做到成本低、安全性高、性能不变、方便调用等,却是一门学问。本文讲述华为云Stack的解决之道。 本文分享自华为云社区《【华为云Stack】【大架光临】第17期:更安全、更低耗的微服务架构改造之道》,作者:杨奕 华为云技术规划专家。 在以往的文章《云原生时代,政企混合云场景IT监控和诊断的难点和应对之道》中,…

    云计算 2023年4月17日
    00
  • 分布式计算编程基础—云计算笔记DAY4

    进程间通信(interprocess communication,IPC) 概念:互相独立进程间通信及共同协作以完成某项任务的能力 进程:程序运行时的表示(分布式计算的核心技术) 分布式计算中,两个或多个进程按约定的某种协议进行IPC。 协议:数据通信各参与进程必须遵守的一组规则。 分类:单播通信(unicast)和组播通信(multicast) IPC设施…

    云计算 2023年4月12日
    00
  • asp.net大文件上传解决方案实例代码

    下面是关于“ASP.NET大文件上传解决方案实例代码”的完整攻略,包含两个示例说明。 简介 在ASP.NET应用程序中,文件上传是一个常见的需求。但是,当上传大文件时,我们可能会遇到一些问题,例如上传速度慢、内存占用高等。在本攻略中,我们将介绍ASP.NET大文件上传解决方案,并提供两个示例说明。 解决方案 ASP.NET大文件上传解决方案包括以下几个方面:…

    云计算 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部