python print end =''
我有这个python脚本,我需要运行gdal_retile.py
但是我在这行上得到一个exception:
if Verbose: print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
end=''
是无效的语法。 我很好奇,为什么,作者可能打算做什么。
如果你还没有猜到,我是新来的python。
我认为问题的根本原因是这些导入失败,因此必须包含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("foo" % bar, end=" ")
在Python 2.x是相同的
print ("foo" % bar, end=" ")
要么
print "foo" % bar, end=" "
即作为一个调用来打印一个元组作为参数。
这显然是不好的语法(文字不采取关键字参数)。 在Python 3.x中, print
是一个实际的函数,所以它也带有关键字参数。
Python 2.x for end=" "
的正确用法是:
print "foo" % bar,
(注意最后的逗号,这使得它结束了一个空格而不是换行符)
如果您想要更多地控制输出,请考虑直接使用sys.stdout
。 这不会对输出做任何特殊的魔法。
当然,在最近版本的Python 2.x(2.5应该有,不知道2.4),你可以使用__future__
模块在脚本文件中启用它:
from __future__ import print_function
unicode_literals
和其他一些好东西(例如with_statement
)也是一样。 但是,这并不适用于Python 2.x的真正旧版本(即在引入function之前创build的版本)。
这个怎么样:
#Only for use in Python 2.6.0a2 and later from __future__ import print_function
这使您可以使用Python 3.0样式的print
function,而无需手动编辑所有出现的print
🙂
在Python 2.7中,这是你如何做到这一点
mantra = 'Always look on the bright side of life' for c in mantra: print c, #output A lwayslookonthebrights ideoflife
在python 3.x
myjob= 'hacker' for c in myjob: print (c, end='') #output hacker
首先,你刚开始缺less一个报价,但这可能是一个复制/粘贴错误。
在Python 3.x中, end=' '
部分将在显示的string之后放置一个空格,而不是换行符。 为了在Python 2.x中完成同样的事情,最后要input一个逗号:
print "Building internam Index for %d tile(s) ..." % len(inputTiles),
我认为他使用的是Python 3.0,而您使用的是Python 2.6。
看起来你只是缺less一个开放的双引号。 尝试:
if Verbose: print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
我认为作者可能是指:
if Verbose: print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
他在print(
后错过了最初的报价print(
。
请注意,从Python 3.0开始 , print
是一个函数,而不是一个语句,如果您使用的是旧版本的Python,则相当于:
print "Building internam Index for %d tile(s) ..." % len(inputTiles)
end
参数表示该行在结尾而不是换行符。 早期版本的Python中的等价物是:
print "Building internam Index for %d tile(s) ..." % len(inputTiles),
(感谢Ignacio)。
即使我今天也遇到同样的错误。 而且我经历了一件有趣的事情。 如果您使用的是Python 3.x,但仍然出现错误,这可能是一个原因:
您在同一个驱动器上安装了多个python版本。 当你popupf5button时,会popuppython shell窗口(ver。<3.x)
我今天得到同样的错误,并注意到这一点。 相信我,当我从合适的shell窗口(版本3.x)执行我的代码时,我得到了满意的结果
USE :: python3 filename.py
我有这样的错误,发生这种情况,因为我有两个版本的python安装在我的驱动器,即python2.7和python3。 以下是我的代码:
#!usr/bin/python f = open('lines.txt') for line in f.readlines(): print(line,end ='')
当我运行它的命令python lines.py
我得到了以下错误
#!usr/bin/python f = open('lines.txt') for line in f.readlines(): print(line,end ='')
当我运行它的命令python3 lines.py
我成功执行
这只是一个版本的东西。 由于Python 3.x的打印实际上是一个函数,所以它现在需要像任何正常的函数参数。
end=' '
只是说,你需要在声明结束后的空间,而不是一个新的行字符。 在Python 2.x中,您必须通过在打印语句的末尾放置一个逗号来执行此操作。
例如,在Python 3.x环境中:
while i<5: print(i) i=i+1
会给出以下输出:
0 1 2 3 4
在哪里:
while i<5: print(i, end = ' ') i=i+1
将作为输出:
0 1 2 3 4
对于python 2.7我有同样的问题只需使用“ from __future__ import print_function ”而不用引号来解决这个问题。这确保了Python 2.6和更高版本的Python 2.x可以使用Python 3.x打印function。
我们需要在使用end=''
之前导入一个头文件,因为它不包含在python的正常运行时。
from __future__ import print_function
它现在应该完美