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问题,而是wget
的一个特性:
wget url > stdout.txt 2> stderr.txt
这里stdout.txt
是空的,stdout.txt 2>
有200 OK
etc的屏幕输出。这是一个well known fact。诊断消息可能会干扰管道,因此更好地路由到stderr。