我已经给出了
subprocess.call(['ping', '127.0.0.1', '>>', 'out15.txt'])
python脚本中的语句。
但是我收到了未知的主机错误。
请让我知道为什么我会收到这个错误。
答案 0 :(得分:0)
因为您将>> out15.txt
作为参数传递给ping。
>>
是cmd \ bash的特殊字符。如果你坚持使用命令将输出重定向到文件,而是使用python代码,你可以这样做:
subprocess.call(['cmd', '/c', 'ping', '127.0.0.1', '>>', 'out15.txt'])
bash也一样。
答案 1 :(得分:0)
由于@Ori Seri pointed out >>
通常由shell解释:
from subprocess import call
call('ping 127.0.0.1 >> out15.txt', shell=True)
注意:字符串参数为shell=True
。
你可以在没有shell的情况下做到这一点:
with open('out15.txt', 'ab', 0) as output_file:
call(["ping", "127.0.0.1"], stdout=output_file)
注意:list参数带有shell=False
(默认值)。
您无需编写输出文件来解释ping
结果;你可以改用退出状态:
from subprocess import call, DEVNULL
ip = "127.0.0.1"
rc = call(["ping", '-c', '3', ip], stdout=DEVNULL)
if rc == 0:
print('%s active' % ip)
elif rc == 2:
print('%s no response' % ip)
else:
print('%s error' % ip)