如何在Python中通过管道传递Python进程的输出?

激励G

我正在编写一个程序,使用可以从YouTube下载视频youtube-dl

我曾经用来呼叫youtube-dl subprocess

import subprocess

p = subprocess.Popen([command], \
    stdout=subprocess.PIPE, \
    stderr=subprocess.STDOUT, \
    universal_newlines = True)

然后,我将通过调用以下内容来读取进程的输出:

for line in iter(p.stdout.readline, ""):
    hide_some_stuff_using_regex()
    show_some_stuff_using_regex()

但是,我更喜欢将其youtube-dl用作Python类。所以我现在正在这样做:

from youtube_dl import YoutubeDL as youtube_dl

options = {"restrictfilenames": True, \
           "progress_with_newline": True}

ydl = youtube_dl(options)
ydl.download([url])

该代码有效,但是我很难找出如何管道youtube-dl输出。请注意,我想使用youtube-dl输出的一部分进行实时打印,因此重定向sys.stdout到自定义输出流将不起作用,因为我仍然需要sys.stdout进行打印。

你能帮助我吗?

皮哈格

专门针对youtube-dl,您可以设置logger对象,如文档中的高级示例所示

from youtube_dl import YoutubeDL


class MyLogger(object):
    def debug(self, msg):
        print('debug information: %r' % msg)

    def warning(self, msg):
        print('warning: %r' % msg)

    def error(self, msg):
        print('error: %r' % msg)


options = {
    "restrictfilenames": True,
    "progress_with_newline": True,
    "logger": MyLogger(),
}

url = 'http://www.youtube.com/watch?v=BaW_jenozKc'
with YoutubeDL(options) as ydl:
    ydl.download([url])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中从子进程获取返回代码和输出?

如何在Python 2.7中隐藏子进程的输出

如何在Python中使用子进程重定向输出?

如何在Python中启动后台进程?

如何在python中“采用”子进程

如何在Python中通过for循环传递列表列表?

如何在python中通过多进程使用tqdm?

如何通过子进程将Picamera视频通过管道传输到FFMPEG(Python)

如何捕获通过管道传递到Rust程序的进程的输出?

如何通过管道从python中的另一个进程读取二进制数据?

如何将输出通过管道输出到stdout并进入docker中的另一个进程

如何在Perl中通过管道连接进程?

如何在Python的进程之间传递stacktrace?

如何在Python中实现管道化?

如何在Powershell中通过管道传递来自foreach的输出

如何获取包含管道的Python子进程命令的输出?

如何在R中通过管道传递到if语句

您如何在Python中处理管道和输出?

通过子进程中的python脚本传递UTF-8

如何在Python中通过管道传递到os.execv'd进程的stdin

如何将python脚本的输出通过管道传递到Rscript?

如何使用通过批处理管道传递的两个命令中的相同输出文件

如何在Python中获取进程的pid

如何通过管道grep输出从python中的STDIN中读取

在bash函数内部,如何在定义时不调用python程序的情况下将输出通过管道传递到python程序?

如何在Django Python中通过URL传递objectId

如何在Powershell中通过管道传递旧命令的输出?

进程如何在其输出通过管道传输时消除转义码?

如何通过管道传递 curl 的 JSON 输出以使用 python 查询 JSON 值