2015-09-21 70 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比初学者更容易使用子进程...(尽管在任何地方你都可以阅读,但似乎并不鼓励) –