python Popen 获取输出,等待运行完成示例

yizhihongxing

Python中的subprocess模块允许我们在Python中创建新的进程,与外部进程进行交互并获取执行结果。其中,Popen()是最基本的函数之一,它可以启动一个子进程,并返回一个Popen对象,该对象可用于操作子进程。

下面是获取Popen输出、等待进程完成的一般步骤:

  1. 导入subprocess模块
    import subprocess

  2. 使用Popen启动子进程,以获取执行命令的输出
    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
    在此示例中,我们使用了stdout=subprocess.PIPE将标准输出(stdout)捕获到管道中,也可以使用stderr=subprocess.PIPE捕获标准错误(stderr)到管道中。shell=True表示在shell下运行命令。

  3. 循环读取输出,直到进程完成
    while process.poll() is None:
    output = process.stdout.readline().rstrip().decode()
    if output:
    print(output)

    在此示例中,我们使用了poll()来检查子进程是否完成。我们将循环读取由管道传输的所有输出,直到子进程完成输出后返回None

  4. 调用wait()等待进程完成
    process.wait()
    在此示例中,我们使用wait()来阻塞当前进程,等待子进程完成。

下面是获取Popen输出、等待进程完成的两个示例说明:

示例1:执行简单的shell命令

在此示例中,我们使用Popen执行ls命令,并捕获标准输出,等待该进程完成并输出结果。

import subprocess

command = 'ls /'
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)

while process.poll() is None:
    output = process.stdout.readline().rstrip().decode()
    if output:
        print(output)

process.wait()

其中,ls /是Linux/Mac下的命令,用于列出根目录下的所有文件和文件夹。在Windows下可以使用dir C:\代替。

示例2:执行Python脚本并获取输出

在此示例中,我们使用Popen执行一个Python脚本,并捕获标准输出,等待该进程完成并输出结果。

Python脚本示例(content.py)如下:

name = input("Please enter your name: ")
print("Hello, " + name + "!")

Python程序示例:

import subprocess

with open('output.log', 'w') as o:
    command = ['python', 'content.py']
    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

    while process.poll() is None:
        output = process.stdout.readline().decode()
        if output:
            o.write(output)
            print(output)

    process.wait()

在此示例中,我们使用了with open()来打开一个文件o,将程序运行输出保存在该文件中。

在命令行下执行python program.py后,程序将等待用户输入姓名,并输出信息“Hello, ____!”。在本例中,我们使用Popen执行程序,并从标准输出中获取输出结果,并将其输出到文件output.log和控制台。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python Popen 获取输出,等待运行完成示例 - Python技术站

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

相关文章

  • python调用xlsxwriter创建xlsx的方法

    我可以为您提供“python调用xlsxwriter创建xlsx的方法”的完整实例教程,下面是详细步骤和示例说明。 安装xlsxwriter 首先,在使用xlsxwriter前,需要先安装xlsxwriter库,可以使用以下命令来安装: pip install xlsxwriter 注意,要保证在已经安装了Python的环境下运行该命令。 示例1:创建基础的…

    python 2023年5月13日
    00
  • 带有 Amazon Linux AMI 和 Python 的 MS SQL 驱动程序

    【问题标题】:MS SQL Driver with Amazon Linux AMI an Python带有 Amazon Linux AMI 和 Python 的 MS SQL 驱动程序 【发布时间】:2023-04-04 19:10:01 【问题描述】: 我看过很多关于 PHP 的此类帖子,但没有关于 Python 的帖子。 我正在尝试在 AWS Ela…

    Python开发 2023年4月6日
    00
  • Python中bytes字节串和string字符串之间的转换方法

    在Python中,bytes字节串和string字符串是两种不同类型的数据结构,它们在很多场合下会互相转换。下面将详细讲解bytes和string之间的转换方法。 bytes转string 将bytes字节串转换为string字符串可以使用bytes的decode()方法。 bytes_data = b’\xe8\xaf\xb7\xe8\xbe\x93\xe…

    python 2023年6月5日
    00
  • python基础编程小实例之计算圆的面积

    Python基础编程小实例之计算圆的面积 1. 实现思路 计算圆的面积,需要用到圆的半径和圆周率。圆周率常用的取值是3.14159,而半径需要用户输入。然后根据圆的面积公式$S=\pi\times r^2$,计算出圆的面积值。 2. 实现步骤 2.1 输入半径 首先需要让用户输入圆的半径,可以使用input()函数获取用户输入的半径值,并将其转换为浮点型数值…

    python 2023年6月3日
    00
  • 使用pandas读取文件的实现

    当我们需要使用Python处理数据时,Pandas是非常有用和流行的库。Pandas提供了一种方便的方式来读取不同格式(例如CSV,Excel等)的文件,并将其转换为DataFrame对象以便于处理和分析。 1. 安装Pandas 在开始之前,请确保您已经安装了Pandas库。在命令行中运行以下命令: pip install pandas 2. 读取CSV文…

    python 2023年6月3日
    00
  • python 合并多个excel中同名的sheet

    合并多个Excel文件中同名的Sheet可以通过Python的pandas库来实现。具体步骤如下: 安装pandas库 在终端中输入以下命令安装pandas库: pip install pandas 导入pandas库 在Python代码文件中导入pandas库: import pandas as pd 读取Excel文件 使用pandas库的read_ex…

    python 2023年6月5日
    00
  • 手把手教你实现Python重试超时装饰器

    以下是“手把手教你实现Python重试超时装饰器”的完整攻略,其中包括了重试超时装饰的定义、实现方法、示例说明以及常见问题解决方法。 手把手教你实现Python重试超时装饰器 重试超时装饰器的定义 重试超时装饰器是一种装饰器,用于在函数执行失败或超时时自动重试。它可以帮助我们更好地处理网络请求、IO操作等可能会失败操作。 重试超时装饰器的实现方法 重试超时装…

    python 2023年5月13日
    00
  • 浅谈Python几种常见的归一化方法

    浅谈Python几种常见的归一化方法 在机器学习中,归一化是一种常用的数据预处理技术,其目的是将不同量纲的特征值缩放到相同的范内,以便更好地进行模型训练和预测。本文将介绍Python中几种常见的归一化方法,并提供两个示例说明。 1. Min-Max归一化 Min-Max归一化是一种常用的线性归一化方法,其公式如下: $${norm} = \frac{x – …

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部