2

运行GDAL时是否可以禁用cmd窗口?类似于“静音模式”。

我用 :

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

2 回答 2

3

您可以使用subprocess.Popen类。

Popen使用instead of 的一个优点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])
于 2013-04-21T21:18:35.613 回答
1

您可以通过切换到subprocess.eg 模块subprocess.call并使用shell = True参数来解决此问题。我是从 StackOverflow 得到的,更具体地说是从这篇文章中得到的。

于 2013-04-21T18:15:18.327 回答