将输出读入os.system命令中的变量

时间:2018-02-06 11:30:05

标签: python linux awk os.system

我有python脚本,该脚本在Linux中运行。我需要捕获命令的输出并存储到变量中然后应该打印输出。代码如下。

#!/usr/bin/python
import os, time
systime=os.popen('date +"%m-%d-%y-%T"').read()
os.system("read c1 c2 c3 c4 c5 c6 < <(sar -u 1 1 | awk 'NR==4, NR==4 {print $4, $5, $6, $7, $8, $9}')")
os.system("echo $systime,$c1,$c2,$c3,$c4,$c5,$c6 >> outputfile.txt")

我使用read命令将命令sar -u 1 1 | awk 'NR==4, NR==4 {print $4, $5, $6, $7, $8, $9}')给出的输出收集到6个变量 - c1, c2, c3, c4, c5 c6中。当我尝试执行上面的代码时,我收到以下错误 -

sh: -c: line 0: syntax error near unexpected token `<'

我甚至尝试使用os.popen代替os.system,但最终仍然遇到了同样的错误。建议我如何使用os.system命令存储变量如何在后期使用它们。我的目标是将所有变量(包括捕获的时间)打印到输出文件outputfile.txt中。 TIA

1 个答案:

答案 0 :(得分:0)

这就是我的意思,当我说“你在python中无法完成的任务是什么”:

#!/usr/bin/python3
from subprocess import run, PIPE
from datetime   import datetime

output = run(['sar','-u','1','1'], stdout=PIPE).stdout.decode()
line = output.split("\n")[3]    # 4th line
values = line.split()[-6:]      # last 6 fields

now = datetime.now().strftime("%m-%d-%y-%T")

print(",".join([now] + values))