将 python 个变量传递到命令中

Pass python variables into a command

我想将 python 代码段中的变量 'first' 和 'last' 传递到命令中。

Python代码:

import csv
import dateutil.parser

with open('run.csv') as f:
   reader = csv.reader(f)
   first = dateutil.parser.parse(reader.next()[3])
   for row in reader:
     pass
last = dateutil.parser.parse(row[3])

命令:

$ influx -execute="SELECT MEAN(value) FROM cpu_value WHERE time >= first and time <= last GROUP BY type,type_instance" -database=collectd  -format=csv -pretty=true 

我怎样才能做到这一点?

您最好在 python 内调用 influx。 为此,您可以使用 python 的 subprocess.check_call。参见 here

import csv
import dateutil.parser
import subprocess

with open('run.csv') as f:
   reader = csv.reader(f)
   first = dateutil.parser.parse(reader.next()[3])
   for row in reader:
      pass
last = dateutil.parser.parse(row[3])

print (first,last)
command = "/opt/influxdb/influx -execute=\"SELECT MEAN(value) FROM cpu_value WHERE time >= {0} and time <= {1} GROUP BY type,type_instance\" -database=collectd  -format=csv -pretty=true".format(first, last)subprocess.check_call(command, shell=True)