为什么“输入”操作员失败

时间:2019-04-08 19:29:49

标签: python python-3.x

我正在尝试编写一个检查Web服务器是否启动的函数。 我运行wget命令,然后检查字符串中200 OK的结果。我正在使用in运算符,但是它一直失败,并且我不确定自己在做什么错。

我已经在下面发布了我的代码。

感谢阅读。

import subprocess

web_address = "reddit.com"
wget = subprocess.Popen(["wget", "--spider", web_address], stdout=subprocess.PIPE)
output, err = wget.communicate()
response = output.decode('utf-8')
if '200 OK' in response:
    print("its up")
else:
    print("its down")

编辑:subprocess.getoutput()解决了我的问题。

1 个答案:

答案 0 :(得分:0)

wget将所有消息记录到stderr,您可以使用stderr捕获stderr=subprocess.PIPE的输出,然后检查err,也可以重定向{{1 }}与stderr一起stdout,然后继续使用stderr=subprocess.STDOUT,例如:

output

或使用In []: wget = subprocess.Popen(["wget", "--spider", web_address], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output, err = wget.communicate() '200 OK' in output.decode('utf-8') Out[]: True 通话:

check_output()

或使用In []: output = subprocess.check_output(["wget", "--spider", web_address], stderr=subprocess.STDOUT, encoding='utf-8') '200 OK' in output Out[]: True (@Boris):

subprocess.run()