栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-子流程命令的实时输出

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-子流程命令的实时输出

你可以通过两种方法执行此操作,或者通过从

read
readline
函数创建迭代器,然后执行以下操作:

import subprocessimport syswith open('test.log', 'w') as f:  # replace 'w' with 'wb' for Python 3    process = subprocess.Popen(your_command, stdout=subprocess.PIPE)    for c in iter(lambda: process.stdout.read(1), ''):  # replace '' with b'' for Python 3        sys.stdout.write(c)        f.write(c)

要么

import subprocessimport syswith open('test.log', 'w') as f:  # replace 'w' with 'wb' for Python 3    process = subprocess.Popen(your_command, stdout=subprocess.PIPE)    for line in iter(process.stdout.readline, ''):  # replace '' with b'' for Python 3        sys.stdout.write(line)        f.write(line)

或者,你可以创建

reader
writer
文件。将传递
writer
Popen
并从中读取
reader

import ioimport timeimport subprocessimport sysfilename = 'test.log'with io.open(filename, 'wb') as writer, io.open(filename, 'rb', 1) as reader:    process = subprocess.Popen(command, stdout=writer)    while process.poll() is None:        sys.stdout.write(reader.read())        time.sleep(0.5)    # Read the remaining    sys.stdout.write(reader.read())

这样,你就可以将数据写入

test.log
和标准输出中。

文件方法的唯一优点是你的代码不会被阻塞。因此,你可以同时做任何你想做的事,并reader以不阻塞的方式随时阅读。当使用

PIPE,read
readline
功能将阻塞,直到任一个字符被写入到管或线被分别写入到管道。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407634.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号