2015-09-21 115 views
1

內的文件,所以我有一個.exe工具需要在這是我們用來一些GIS數據從一種格式轉換爲包格式轉換CMD執行。語法看起來像這樣:參數傳遞到.EXE CMD

C:\Caris\BDB\4.0\bin > carisbatch -r SurfacetoBAG [options] "input_file" "output_file" 

我有大約40 GIS數據的文件的目錄,所以我想知道如何自動上述CMD工具,它將通過使用全部40個文件作爲運行「輸入文件」。我已經研究過使用python封裝在for循環中的subprocess()模塊,但我覺得它只能用於unix系統。有任何想法嗎?

回答

1

您可以使用子進程在Windows上沒有問題... ... 榜樣

import subprocess 

for file in my_files: 
    subprocess.Popen(["C:/Caris/BDB/4.0/bin/carisbatch.exe",'-r','SurfacetoBAGfile',file+".output"]) 

,如果你需要做的是無列表格式

for file in my_files: 
    subprocess.Popen('C:/Caris/BDB/4.0/bin/carisbatch.exe -r SurfacetoBAGfile "{0}" "{0}.output"'.format(file),shell=True) 
+0

這幾乎是我在找的東西!問題在於carisbatch.exe包含多個其他模塊,因此需要將SurfacetoBAG指定爲要使用的模塊。我的解決方案是在子進程調用中設置「shell = true」,所以我可以保留我的文章中顯示的原始cmd語法。我的下一個問題是,在這種情況下,我將如何傳入「文件」作爲參數? – purelyp93

1

如果導入的操作系統,你應該能夠使用 os.system('your command')

無論平臺如何(當然,命令字符串會在平臺表格)

+0

您也可以使用子進程而不管平臺... +1,但是因爲imho os.system/os.popen比初學者更容易使用子進程...(儘管在任何地方你都可以閱讀,但似乎並不鼓勵) –