Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python子进程Popen stdout仅用于变量_Python_Subprocess_Popen - Fatal编程技术网

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也会转到输出。