2013-07-30 117 views
1

我有一個調用外部命令的python程序。 命令需要看起來像這樣:在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') 
+0

難道你讀http://stackoverflow.com/questions/89228/calling-an-external-command-in-python?rq= 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') 

此外,作爲烏克萊因指出你不應該使用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']) 
+0

@ sasha.sochka:如何調用'C:\ Program Files(x86)\ MSBuild \ 12.0 \ Bin \ msbuild「D:\ WebService \ IDEWebService.sln」/ p:DeployOnBuild = true/p:PublishProfile =「 D:\ WebService \ Properties \ PublishProfiles \ MyDeployment.pubxml「/ p:AllowUntrustedCertificate = true/p:UserName = Admin/p:Password = password' from python3.4 ' –