Python子进程Popen stdout仅用于变量
我想做一些简单的事,但我不明白。。。我在谷歌上做了很多搜索,但没有找到任何东西 我正在这样做:Python子进程Popen stdout仅用于变量,python,subprocess,popen,Python,Subprocess,Popen,我想做一些简单的事,但我不明白。。。我在谷歌上做了很多搜索,但没有找到任何东西 我正在这样做: from subprocess import Popen, PIPE p1 = Popen(["fping", '-C10', '-B1', '-p500', '-r1', '-s', '172.29.172.106'], stdout=PIPE) output = p1.communicate() 因此,python执行我的命令,通信等待返回代码,它工作正常。但是,我不知道为什么它会显示输出。。
from subprocess import Popen, PIPE
p1 = Popen(["fping", '-C10', '-B1', '-p500',
'-r1', '-s', '172.29.172.106'], stdout=PIPE)
output = p1.communicate()
因此,python执行我的命令,通信等待返回代码,它工作正常。但是,我不知道为什么它会显示输出。。。像这样:
172.29.172.106 : 13.50 18.56 13.22 13.42 13.39 187.62 13.34 13.51 13.36 26.35
1 targets
1 alive
0 unreachable
0 unknown addresses
0 timeouts (waiting for response)
10 ICMP Echos sent
10 ICMP Echo Replies received
0 other ICMP received
13.2 ms (min round trip time)
32.6 ms (avg round trip time)
187 ms (max round trip time)
4.530 sec (elapsed real time)
我只想执行一个命令,然后将输出重定向到一个变量,但我不想显示输出,因为它会淹没我的crontab日志文件
所以问题是:如何使用popen(或其他函数)执行命令并将输出重定向到变量而不显示它
致以最良好的祝愿
import subprocess
p1 = Popen(["fping", '-C10', '-B1', '-p500','-r1', '-s', '172.29.172.106'],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
output,error = p1.communicate()
尝试此操作。如果从CLI运行命令,使用
>dump.txt重定向输出,它是否仍显示在窗口中?它是我的主脚本的一个子部分。我的主脚本已经在使用“>>mycrontab.log 2>&1”。这就是问题的原因。。。它淹没了我的日志file@VenderAeloth输出仍然在标准输出上?你能试着运行edite done吗?user@host:/dir#python test.py 172.29.172.106:159.00 13.36 13.55 38.89 161.32 13.19 13.25 44.43 164.31 13.29 1目标1活动0无法访问0未知地址0超时(等待响应)10个ICMP回送发送10个ICMP回送回复收到0个其他ICMP收到13.1毫秒(最小往返时间)63.4毫秒(平均往返时间)164毫秒(最大往返时间)4.518秒(已用实时)user@host:/dir#正如我所说,行为是平等的。它有效。。。stderr=需要子流程.PIPE!不知道为什么。。。但它是有效的!谢谢:-)@VenderAeloth您正在重定向stdout,但当命令失败且出现错误时,它会转到stderr
。因此您也需要重定向它。:)默认情况下,stderr也会转到输出。