运行GDAL时是否可以禁用cmd窗口?

时间:2013-04-21 17:14:43

标签: python

运行GDAL时是否可以禁用cmd窗口? 像“静音模式”的东西。

我用:

os.system('gdal_translate -of GTiff %s %s'%(in1, out1))

2 个答案:

答案 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