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

Python子进程等待,直到标准输出上的特定字符串

,可以通过以下步骤实现:

  1. 导入必要的模块:
代码语言:txt
复制
import subprocess
import re
  1. 创建子进程并执行命令:
代码语言:txt
复制
process = subprocess.Popen(['command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)

其中,command是要执行的命令。

  1. 循环读取子进程的标准输出,直到匹配到特定字符串:
代码语言:txt
复制
while True:
    output = process.stdout.readline()
    if output == '' and process.poll() is not None:
        break
    if re.search('特定字符串', output):
        break

在这里,特定字符串是你要等待的字符串。

  1. 等待子进程结束并获取返回结果:
代码语言:txt
复制
process.communicate()

完整的代码示例:

代码语言:txt
复制
import subprocess
import re

def wait_for_string():
    process = subprocess.Popen(['command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
    while True:
        output = process.stdout.readline()
        if output == '' and process.poll() is not None:
            break
        if re.search('特定字符串', output):
            break
    process.communicate()

wait_for_string()

在这个例子中,你需要将command替换为你要执行的实际命令,将特定字符串替换为你要等待的实际字符串。

对于腾讯云相关产品,可以使用腾讯云函数(SCF)来执行这个Python脚本。腾讯云函数是一种无服务器计算服务,可以帮助你在云端运行代码。你可以通过以下链接了解更多关于腾讯云函数的信息:

请注意,以上答案仅供参考,具体实现方式可能因实际情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python—subprocess、gl

像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。...我们必须调用对象的wait()方法,父进程才会等待 (也就是阻塞block) 例1(父进程不等待子进程): #!...child的完成,而是直接运行print 例2(父进程等待子进程): #!...()       # 终止子进程 child.pid               #存储子进程的PID 2.子进程的文本流控制 子进程的标准输入、标准输出和标准错误如下属性分别表示: child.stdin...child2的输出文本也被存放在PIPE中,直到communicate()方法从PIPE中读取出PIPE中的文本;communicate()是Popen对象的一个方法,该方法会阻塞父进程,直到子进程完成

1.5K20

Python标准库06 子进程 (subprocess包)

在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序(fork,exec见Linux进程基础)。...subprocess.check_output() 父进程等待子进程完成 返回子进程向标准输出的输出结果 检查退出信息,如果returncode不为0,则举出错误subprocess.CalledProcessError...这个时候,我们使用一整个字符串,而不是一个表来运行子进程。Python将先运行一个shell,再用这个shell来解释这整个字符串。...要注意的是,communicate()是Popen对象的一个方法,该方法会阻塞父进程,直到子进程完成。...) child.communicate("vamei") 我们启动子进程之后,cat会等待输入,直到我们用communicate()输入"vamei"。

2.8K60
  • Python模块之subprocess

    二 基础知识 Python2.4引入subprocess模块来管理子进程,可以像Linux 系统中执行shell命令那样fork一个子进程执行外部的命令,并且可以连接子进程的output/input...他们分别是 2.1 subprocess.call() 父进程等待子进程完成,并且返回子进程执行的结果 0/1 其实现方式 def call(*popenargs, **kwargs):...,需要考虑 1) 在创建子进程之后,父进程是否暂停,并等待子进程运行。...与上面第二部分介绍的三个函数不同,subprocess.Popen() fork子进程之后主进程不会等待子进程结束,而是直接执行后续的命令。...需要注意的是 communicate()是Popen对象的一个方法,该方法会阻塞父进程,直到子进程完成。 Popen.send_signal(signal) 向子进程发送信号。

    2K10

    Python 执行系统命令

    system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程。...Popen方法: 1、Popen.poll():用于检查子进程是否已经结束。设置并返回returncode属性。 2、Popen.wait():等待子进程结束。设置并返回returncode属性。...该函数将一直等待到子进程运行结束,并返回进程的returncode。文章一开始的例子就演示了call函数。如果子进程不需要进行交互,就可以使用该函数来创建。...ipconfig', # cmd特定的查询空间的命令 stdin=None, # 标准输入 键盘 stdout=PIPE, # -1 标准输出(演示器、终端) 保存到管道中以便进行操作...stderr=PIPE, # 标准错误,保存到管道 shell=True) # print(proc.communicate()) # 标准输出的字符串+标准错误的字符串 outinfo

    1.7K10

    subprocess 使用总结

    最近在项目中有使用 subprocess 这个模块,它的功能主要是fork一个子进程,并且运行一个外部的程序。说白了就是可以用这个模块可以根据输入的字符串执行对应的系统 shell 指令。...linux下,默认是 /bin/bash universal_newlines参数,如果把 universal_newlines 设置成True,则子进程的 stdout 和 stderr 被视为文本对象...subprocess.PIPE 表示一个可以被用于Popen的stdin 、stdout 和stderr 3个参数的特输值,表示需要创建一个新的管道。...2.Popen的方法: Popen.poll(), 用于检查子进程是否已经结束。设置并返回returncode属性。 Popen.wait(), 等待子进程结束。设置并返回returncode属性。...Popen.pid,获取子进程的进程ID。 Popen.returncode, 获取进程的返回值。如果进程还没有结束,返回None。

    1.8K30

    python中的subprocess

    python2.7 源码中的注释(由于能力有限,翻译的不太准确): 这个模块允许您开启进程、连接输入、输出和错误的管道,并获取他们的返回代码。...在python程序中都是看作为\n 注意: 这种功能仅仅支持用通用换行符构建的python(默认)。同时文件对象标准输出、标准输入、标准错误的换行符属性,不会被communicate()模块所更新。...Popen 对象 ============= Popen类的实例有以下方法 poll()     检查子进程是否终止,返回returncode属性 wait()     等待子进程终止。...communicate(input=None)     与进程相互作用: 发送数据到标准输入。从标准输出、标准错误读取数据, 直到到达文件尾。等待进程终止。...可选的input参数应该是发送给子进程的字符串,或者如果没有要发送给子进程的数据那就用None      communicate() 返回一个元组 (stdout, stderr).

    1.6K30

    Python,Shell 和 三个标准文件

    场景 使用 Python 执行 Shell 命令(或者脚本),有两种执行场景: 等待,直到命令执行完毕,一次性获取返回结果,做一些你想做的事情; 命令执行的同时,实时获取命令的持续输出,做一些你想做的事情...标准错误输出文件(stderr) 后两个文件对应终端的屏幕,进程从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。...False 的时候,我们需要把命令按空格使用逗号分隔开来(即 list 数据结构)传给 cmd 参数(目的是让 Python 清楚这条命令的所有细节),代码中的例子就是使用这种;而 True 的时候只需要把命令一股脑...翻译一下: 与进程进行交互:将数据发送到 stdin。从 stdout 和 stderr 文件中读取数据,直到达到文件结尾。等待进程终止。...可选的 input 参数应该是要发送到子进程的字符串,如果没有数据应该发送给子进程,则为 None。 communicate() 返回一个元组 (stdout, stderr)。

    1.4K60

    python的subprocess模块

    它表示的是一个已结束进程的状态信息, ​ ​它所包含的属性如下: args: 用于加载该进程的参数,这可能是一个列表或一个字符串 ​ returncode: 子进程的退出状态码。...bufsize:缓冲区大小,可不用关心 stdin,stdout,stderr:分别表示程序的标准输入,标准输出及标准错误 shell:与上面方法中用法相同 cwd:用于设置子进程的当前目录 env:用于指定子进程的环境变量...等待子进程结束。...process to terminate. returns returncode attribute communicate()等待任务结束 没什么用,用Python当参数,输Python进入环境 stdin...True同时重定向子进程的标准输入、输出与错误 shell:同上 cod:用于设置子进程的当前目录 env:用于指定子进程的环境变量。

    3.1K20

    Python调用系统命令的六种方法

    os.system() system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程。...官方推荐使用该模块执行系统命令,subprocess模块通过子进程来执行外部指令,并通过input/output/error管道,获取子进程的执行的返回信息。...特定的查询空间的命令 stdin=None, # 标准输入 键盘 stdout=PIPE, # -1 标准输出(演示器、终端) 保存到管道中以便进行操作 stderr=PIPE..., # 标准错误,保存到管道 shell=True) # print(proc.communicate()) # 标准输出的字符串+标准错误的字符串 outinfo, errinfo = proc.communicate...中新增的函数, 执行指定的命令, 等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。

    4.1K20

    异步编程举例之闹钟程序

    它们分别是同步版本、多进程版本,之后和大家分享多线程版本。 该程序循环接受用户的输入信息,直到出错或者输入完毕。...第一个是标准io的头文件,第二个是sleep()函数用到的头文件。接下来上码。...这样可以随时输入命令行,彼此独立运行,不会阻塞等待。程序难点在于对子进程的资源回收,不做重点说明。...成功解析输入信息后,创建子进程延时、显示信息。父进程则等待子进程结束并回收资源,通常是调用某个waitpid函数。 WNOHANG属性使父进程不必挂起等待子进程结束。...如果有子进程终止,则waitpid ()函数回收子进程资源,如果没有子进程结束,该函数立即返回0。父进程继续回收终止的子进程直到没有子进程终止。 程序运行结果如图: ?

    76230

    Python 【基础面试题】

    ,此时子线程会继续执行自己的任务,直到自己的任务结束。...没有设置守护线程时,主线程将会等待timeout的累加和这样的一段时间,时间一到,主线程结束,但是并没有杀死子线程,子线程依然可以继续执行,直到子线程全部结束,程序退出。...像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序 在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。...subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用 另外subprocess还提供了一些管理标准流(standard stream...(wrapper),这些封装的目的在于让我们容易使用子进程 当我们想要更个性化我们的需求的时候,就要转向Popen类,该类生成的对象用来代表子进程 与上面的封装不同,Popen对象创建后,主程序不会自动等待子进程完成

    1.2K20

    python常用标准库

    ------------------- import os : 1、pid=os.fork():程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),然后复制父进程的所有信息到子进程中;...然后父进程和子进程都会从fork()函数中得到一个返回值,其进程中这个值一定是0,而父进程中是子进程的 id号;主:fock()函数只能在Unix/Linux/Mac上运行,windows不可以运行。...p.join():等待当前进程执行结束,可以等待子进程结束后再继续向下运行,通常用于进程间的同步。...因为两个线程顺序完成,看起来象一个线程,所以称为线程的合并 thread.setDaemon(True):默认情况主线程退出时会等待子线程的结束,如果希望主线程不等待子线程,可以设置子线程为后台线程...线程通过wait()方法进入等待状态,直到另一个线程调度set()方法将内置标志设置为True是,Event通知所有等待状态的线程回复运行。

    92420

    【linux】进程等待与进程替换

    01.进程等待 任何子进程,在退出的情况下,一般必须要被父进程进行等待。...,回收系统资源(一定要考虑的) 获取子进程的退出信息,知道子进程是因为什么原因退出的(可选的功能) 系统调用 wait() wait() 函数使调用的进程(通常是父进程)暂停执行,直到一个子进程终止或发生一个信号...waitpid() waitpid() 函数提供更多的控制,允许父进程等待特定的子进程,或者是与父进程有特定关系的任何子进程。...如果不存在该子进程,则立即出错返回 所以说父进程通过等待,解决子进程退出的僵尸问题,回收系统资源 如果子进程没有退出,父进程其实一直在进行阻塞等待!...argv: 指向以 NULL 结尾的字符串数组的指针,这些字符串为要传递给新程序的命令行参数。 envp: 指向以 NULL 结尾的字符串数组的指针,这些字符串构成了新程序的环境。

    7510

    【Python | 常见场景】最佳实践系列 —— 各种场景及运用(适合下饭刷)

    希望大佬带带) 该文章收录专栏 [✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨] @toc subprocess 模块 subprocess模块是Python标准库中用于创建和管理子进程的模块...与子进程交互: ``subprocess模块还允许您与子进程进行交互,发送输入并获取输出。您可以使用subprocess.Popen`类来创建子进程对象,并使用它的方法进行交互。...\n") process.stdin.close() output = process.stdout.read() print(output) ``` 上述代码创建一个Python子进程,向其发送一段代码...其他功能: ``subprocess`模块还提供了其他一些功能,如控制子进程的输入、输出和错误流、设置超时、在后台运行进程等。您可以查阅官方文档以了解更多详细信息。...以上是subprocess模块的一些基本用法,它提供了执行外部命令和与子进程交互的功能。对于更复杂的用例,建议查阅官方文档以获取更多详细信息和示例。

    20810

    Python subprocess与命令行交互

    Python subprocess 模块是一个功能强大的库,用于启动和与子流程交互。 它附带了一些高级 api,比如调用、检查输出和运行,这些都集中在的程序运行和等待完成的子进程上。...请注意在调用时传递给 Python 的 -u: 这对于避免标准输出缓冲并在进程被终止时尽可能多地查看标准输出非常关键。 在与子进程交互时,缓冲是一个严重的问题,稍后将看到更多这方面的示例。...样品的肉发生在最后一块。 terminate()向子进程发送一个 SIGTERM 信号。 然后,proc.communicate等待子进程退出并捕获所有的标准输出。...,但由于某些原因(缺少换行、缓冲等) ,它无法获得完整的输入 然后调用 readline 等待回复,因为子进程仍然在等待输入完成(步骤1) ,所以的步骤2可能会永远挂起。...这是典型的僵局。 在交互的最后,关闭子进程的 stdin (这是可选的,但对于某些类型的子进程很有用) ,调用 terminate,然后等待。

    7.7K22

    深入理解 RPC 交互流程

    上图是信息系统交互模型宏观示意图,RPC 的消息交互则会深入到底层。 RPC 是两个子系统之间进行的直接消息交互,它使用操作系统提供的套接字来作为消息的载体,以特定的消息格式来定义消息内容和边界。...消息从用户进程流向物理硬件,又从物理硬件流向用户进程,中间还经过了一系列的路由网关节点。 上图呈现的只是 RPC 一次消息交互的上半场,下半场是一个逆向的过程,从服务器进程向客户端进程返回响应数据。...完整的一次 RPC 过程如下图所示: ? 下面用 Python 代码来描述上述过程。 Server 端死循环监听本地 8080 端口,等待客户端的连接。...客户端启动时连接本地 8080 端口,紧接着发送词一个字符串 hello,然后等待服务器响应。 服务器接收到客户端连接后立即收取客户端发送过来的字符串,也就是 hello,打印出来。...send buffer print sock.recv(1024) # 从接收缓冲 recv buffer 中读响应 sock.close() # 关闭套接字 如果从上面代码上观察,我们其实很难看出上图所示的复杂过程

    93320

    【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)

    0; printf("请输⼊成绩:"); scanf("%d", &score); printf("成绩是:%d\n", score); return 0; } 注:标准输⼊⼀般指的就是键盘...,标准输出⼀般指的就是屏幕 基本用法 scanf 函数⽤于读取⽤⼾的键盘输⼊。...程序运⾏到这个语句时,会停下来,等待⽤⼾从键盘输⼊。 ⽤⼾输⼊数据、按下回⻋键后, scanf就会处理⽤⼾的输⼊,将其存⼊变量。 它的原型定义在头⽂件 stdio.h 。...解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。...下⾯要特别说⼀下占位符 %s ,它不能简单地等同于字符串。 它的规则是,从当前第⼀个⾮空⽩字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌。

    36010
    领券