在python中调用外部命令并在命令中插入值

时间:2013-07-30 10:53:29

标签: python command external

我有一个调用外部命令的python程序。 该命令需要如下所示:

java -jar ../GeoNetCWBQuery-4.0.2-bin.jar -s "NZMQZ..HH..." -d 3600 -event:time
"2004/12/26 00:58:50" -event:lat "3.3" -event:lon "95.78" -event:depth "10.0"
-o %c%s%y%/M%/D%z

在python程序中,我已经为需要进入命令的值分配了名称,即日期,时间,纬度,经度,深度。 (我不能只输入值,因为我循环遍历一个巨大的文件。) 所以我的问题是,如何写出来,即如何正确地将值插入命令。目前我(没有工作):

os.system('java -jar GeoNetCWBQuery-4.0.2-bin.jar -s "NZMQZ..HH..." -d 3600
-event:time " + date + +time + " -event:lat " + lat + " -event:lon " + lon +
" -event:depth " + depth + " -o %c%s%y%M%D%z')

1 个答案:

答案 0 :(得分:2)

单/双引号有问题。

os.system('java -jar GeoNetCWBQuery-4.0.2-bin.jar -s "NZMQZ..HH..." -d 3600
-event:time ' + date + time + ' -event:lat ' + lat + ' -event:lon ' + lon +
' -event:depth ' + depth + ' -o %c%s%y%M%D%z')

此外,正如Udo Klein所说,你不应该再使用os.system,而是更喜欢subprocess.call。如果您要将os.system更改为subprocess.call,则代码将如下所示:

subprocess.call('java', ['-jar', 'GeoNetCWBQuery-4.0.2-bin.jar', '-s', 'NZMQZ..HH...', '-d', '3600',
'-event:time', date, time,  '-event:lat', lat, '-event:lon', lon, 
'-event:depth', depth, '-o', '%c%s%y%M%D%z'])