0

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 に保持したいと思います。

4

4 に答える 4

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

関連:Pythonスクリプトを実行した後の余分なゼロ

于 2013-11-13T22:06:30.953 に答える
0

出力を変数に格納する方法は次のとおりです。

test=$(ping -c 1 google.com | awk -F"=| " 'NR==2 {print $11}')
echo "$test"
34.9
于 2013-11-14T06:57:34.143 に答える