【问题标题】:Storing value from a parsed ping从解析的 ping 存储值
【发布时间】:2013-11-26 17:36:27
【问题描述】:

我正在编写一些从 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 中。

【问题讨论】:

  • 你运行的是什么版本的 Python?
  • 我目前正在运行 Python 2.7
  • 出于好奇,用Python做字符串解析不是更简单吗?

标签: python linux awk


【解决方案1】:

如果要将输出存储在变量中,请使用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

相关:Extra zero after executing a python script

【讨论】:

    【解决方案2】:

    os.system() 返回被调用命令的返回码,而不是输出到标准输出。

    有关如何正确获取命令输出的详细信息(包括 Python 2.7 之前的版本),请参阅:Running shell command from Python and capturing the output

    【讨论】:

      【解决方案3】:

      顺便说一句,我会使用 Ping 包 https://pypi.python.org/pypi/ping

      看起来很有希望

      【讨论】:

        【解决方案4】:

        这是我将输出存储到变量的方式。

        test=$(ping -c 1 google.com | awk -F"=| " 'NR==2 {print $11}')
        echo "$test"
        34.9
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多