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样式的printfunction,而无需手动编辑所有出现的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 

它现在应该完美