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

Python 运行GDAL时是否可以禁用cmd窗口?,python,Python,运行GDAL时是否可以禁用cmd窗口? 有点像“静默模式” 我使用: os.system('gdal_translate -of GTiff %s %s'%(in1, out1)) 您可以通过切换到子流程模块来解决此问题,例如子流程.call,并使用shell=True参数。更具体地说,我是从StackOverflow得到的。您可以通过切换到子流程模块来解决此问题。例如子流程。调用,并使用shell=True参数。更具体地说,我是从StackOverflow获得的。您可以使用该类 使用Pope

运行GDAL时是否可以禁用cmd窗口? 有点像“静默模式”

我使用:

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

您可以通过切换到
子流程
模块来解决此问题,例如
子流程.call
,并使用
shell=True
参数。更具体地说,我是从StackOverflow得到的。

您可以通过切换到
子流程
模块来解决此问题。例如
子流程。调用
,并使用
shell=True
参数。更具体地说,我是从StackOverflow获得的。

您可以使用该类

使用
Popen
而不是
call
的一个优点是很容易获得命令输出(使用
call
您需要传入一个类似文件的对象来获取stdout/stderr,因此如果需要在字符串变量中获取它们,则需要使用)

以下是一个例子:

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])
你可以使用这个类

使用
Popen
而不是
call
的一个优点是很容易获得命令输出(使用
call
您需要传入一个类似文件的对象来获取stdout/stderr,因此如果需要在字符串变量中获取它们,则需要使用)

以下是一个例子:

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])

-由于geotiff是默认值,因此不需要使用gtiff。如果要写入不同的输出格式,只需指定它。这个问题可能更适合StackOverflow,因为它实际上是一个纯python问题。-不需要gtiff,因为geotiff是默认值。如果要写入不同的输出格式,只需指定它。这个问题可能更适合StackOverflow,因为它实际上是一个纯python问题。不需要shell=true。此外,文档警告用户,如果与不受信任的输入一起使用,则可能存在安全风险。不需要shell=true。此外,文档警告用户,如果与不受信任的输入一起使用,则可能存在安全风险。