使用子进程模块运行wget,正常输出(通道1)重定向到错误通道(通道2)

问题描述 投票:0回答:1
def wget_url(url):     
   try:
        wget = subprocess.Popen(["wget "+url],shell=True,stdout=PIPE,stderr=PIPE)
        return wget
   except:
        print("HTTP error")

a=wget_url(url)
a.stdout.readlines() #return an empty string.
a.stderr.readlines() #return the normal output that would be displayed in terminal

这是正常的吗?为什么stdout什么都不返回?

python python-3.x subprocess wget
1个回答
0
投票

这不是Python问题,而是wget的一个特性:

 wget url >  stdout.txt 2> stderr.txt

这里stdout.txt是空的,stdout.txt 2>200 OKetc的屏幕输出。这是一个well known fact。诊断消息可能会干扰管道,因此更好地路由到stderr。

© www.soinside.com 2019 - 2024. All rights reserved.