我在需要运行此python脚本的地方gdal_retile.py,但在此行上出现异常:
gdal_retile.py
if Verbose: print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
将end=' '是无效的语法。我很好奇为什么以及作者可能打算做什么。
end=' '
如果您还没猜到,我是python的新手。
我认为问题的根本原因是这些导入失败,因此必须包含此导入 from __future__ import print_function
from __future__ import print_function
try: from osgeo import gdal from osgeo import ogr from osgeo import osr from osgeo.gdalconst import * except: import gdal import ogr import osr from gdalconst import *
您确定使用的是Python 3.x吗?该语法在Python 2.x中不可用,因为print它仍然是一条语句。
print
print("foo" % bar, end=" ")
在Python 2.x中与
print ("foo" % bar, end=" ")
要么
print "foo" % bar, end=" "
即作为调用以元组为参数进行打印。
这显然是错误的语法(文字不带关键字参数)。在Python 3.xprint中,它是一个实际函数,因此它也带有关键字参数。
Python 2.x中正确的习惯用法end=" "是:
end=" "
print "foo" % bar,
(请注意最后一个逗号,这使它以空格而不是换行符结束)
如果要对输出进行更多控制,请考虑sys.stdout直接使用。这不会对输出产生任何特殊的影响。
sys.stdout
当然,在最新版本的Python 2.x(2.5应该有它,不确定是2.4)中,您可以使用__future__模块在脚本文件中启用它:
__future__
这同样与unicode_literals和其他一些好东西(with_statement等)。但是,这在真正的旧版本(即在引入该功能之前创建)Python 2.x中不起作用。
unicode_literals
with_statement