Python 运行GDAL时是否可以禁用cmd窗口?
运行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
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。此外,文档警告用户,如果与不受信任的输入一起使用,则可能存在安全风险。