1

我有一个调用外部命令的 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')
4

1 回答 1

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.systemsubprocess.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'])
于 2013-07-30T10:59:37.267 回答