运行GDAL时是否可以禁用cmd窗口? 像“静音模式”的东西。
我用:
os.system('gdal_translate -of GTiff %s %s'%(in1, out1))
答案 0 :(得分:3)
您可以使用subprocess.Popen课程。
使用Popen
而不是call
的一个好处是可以轻松获取命令输出(使用call
,您需要传入类似文件的对象以获取stdout / stderr因此,如果需要在字符串变量中获取它们,则需要使用StringIO。
以下是一个例子:
def runcmd(cmd):
''' Run a command
cmd = list of arguments or command string
Returns Returns (exit_code,stdout,stderr)
'''
import subprocess
proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
stdout,stderr=proc.communicate()
exit_code=proc.wait()
return exit_code,stdout,stderr
exit_code,stdout,stderr=runcmd('gdal_translate -of GTiff %s %s'%(in1, out1))
# can also use a list, e.g.
# exit_code,stdout,stderr=runcmd(['gdal_translate', '-of', 'GTiff', in1, out1])
if exit_code: print 'Error ocurred:',stderr
else: print 'Success!',stdout
如果您不需要stdout / stderr文本,可以使用subprocess.call:
exit_code=subprocess.call(['gdal_translate', '-of', 'GTiff', in1, out1])
答案 1 :(得分:1)
您可以通过切换到subprocess
模块.e.g subprocess.call
来解决此问题,并使用shell = True
参数。我从StackOverflow得到了这个,更具体地来说是from this post。