我正在研究一些从python执行ping操作的代码,并使用awk仅提取延迟。这就是我现在所拥有的:
from os import system
l = system("ping -c 1 sitename | awk -F = 'FNR==2 {print substr($4,1,length($4)-3)}'")
print l
system()
调用工作正常,但我在终端输出输出而不是存储到l的值。基本上,我从这个特定的代码块中获得的示例输出将是
90.3
0
为什么会发生这种情况,我将如何将该值实际存储到l?这是我正在研究的一件大事的一部分,所以我最好将它保留在原生python中。
答案 0 :(得分:3)
如果要将输出存储在变量中,请使用subprocess.check_output
:
from subprocess import check_output
l = check_output("ping -c 1 sitename | awk -F = 'FNR==2 {print substr($4,1,length($4)-3)}'", shell=True)
print l
答案 1 :(得分:1)
os.system()
返回被调用命令的返回码,而不是输出到stdout。
有关如何正确获取命令输出(包括Python之前的2.7)的详细信息,请参阅:Running shell command from Python and capturing the output
答案 2 :(得分:1)
BTW我会使用Ping包https://pypi.python.org/pypi/ping
看起来很有希望
答案 3 :(得分:0)
以下是我如何将输出存储到变量。
test=$(ping -c 1 google.com | awk -F"=| " 'NR==2 {print $11}')
echo "$test"
34.9