Python 使用关键字参数end=';获取用于打印的SyntaxError';
我有一个python脚本,需要在其中运行Python 使用关键字参数end=';获取用于打印的SyntaxError';,python,Python,我有一个python脚本,需要在其中运行gdal\u retile.py, 但我在这一行有个例外: if Verbose: print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ') end=''的语法无效。我很好奇为什么,以及作者可能想做什么 如果你还没猜到的话,我是python新手 我认为问题的根本原因是这些进口产品失败了 因此,必须包含此导入from\uuuuuu
gdal\u retile.py
,
但我在这一行有个例外:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
end=''
的语法无效。我很好奇为什么,以及作者可能想做什么
如果你还没猜到的话,我是python新手
我认为问题的根本原因是这些进口产品失败了 因此,必须包含此导入
from\uuuuuuuuuuuuuuuuuuuuuuuuuuuu导入打印功能
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 *
这个怎么样:
#Only for use in Python 2.6.0a2 and later
from __future__ import print_function
这使您可以使用Python 3.0风格的
print
函数,而无需手动编辑所有出现的print
:)我想作者的意思可能是:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
他在打印(
)后缺少一个初始报价
请注意,从开始,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)。看起来您只是缺少开头的双引号。请尝试:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
我认为他使用的是Python 3.0,而您使用的是Python 2.6。首先,您在开头缺少一个引号,但这可能是复制/粘贴错误 在Python3.x中,
end='
部分将在显示的字符串后放置空格,而不是换行符。要在Python2.x中执行相同的操作,您需要在末尾添加逗号:
print "Building internam Index for %d tile(s) ..." % len(inputTiles),
您确定使用的是Python3.x吗?该语法在Python2.x中不可用,因为
print
仍然是一条语句
print("foo" % bar, end=" ")
在Python中,2.x与
print ("foo" % bar, end=" ")
或
i、 e.作为以元组作为参数的打印调用
这显然是糟糕的语法(文本不接受关键字参数)。在Python3.x中,print是一个实际函数,所以它也接受关键字参数
Python2.x中end=”“
的正确用法是:
print "foo" % bar,
(请注意最后一个逗号,这将使其以空格而不是换行符结尾)
如果你想对输出有更多的控制,请考虑直接使用<代码> sys .STDUT/<代码>。这不会对输出产生任何特殊的魔法。
当然,在Python2.x的最新版本中(2.5应该有它,但不确定2.4是否有),您可以使用\uuuuuuuuuuuuuuuuuuu
模块在脚本文件中启用它:
from __future__ import print_function
这同样适用于unicode\u文本
和其他一些好东西(例如with\u statement
)。
如果您使用的是python 3.x,但仍然出现错误,那么这可能是一个原因:
在同一个驱动器上安装了多个python版本
在PythonShell窗口中按下f5按钮(版本<3.x)
突然出现
今天我遇到了同样的错误,并注意到了这一点。相信我,当我从正确的shell窗口(3.x版)执行代码时,我得到了令人满意的结果
mantra = 'Always look on the bright side of life'
for c in mantra: print c,
#output
A l w a y s l o o k o n t h e b r i g h t s i d e o f l i f e
我犯了这样的错误,这是因为我的驱动器上安装了两个版本的python,即python2.7和python3。
以下是我的代码:
#!usr/bin/python
f = open('lines.txt')
for line in f.readlines():
print(line,end ='')
当我通过命令pythonlines.py
运行它时,我得到了以下错误
#!usr/bin/python
f = open('lines.txt')
for line in f.readlines():
print(line,end ='')
当我通过命令
python3 lines.py
运行它时,我成功地执行了我们需要在使用end=''
之前导入一个头,因为它不包含在python的正常运行时中
from __future__ import print_function
它现在应该可以很好地工作了,这只是一个版本而已。因为Python3.x打印实际上是一个函数,所以它现在像任何普通函数一样接受参数
end=''
只是说您希望在语句末尾后面有一个空格,而不是一个新行字符。在Python2.x中,您必须在print语句的末尾放一个逗号
print("foo" % bar, end=" ")
例如,在Python 3.x环境中:
while i<5:
print(i)
i=i+1
其中:
while i<5:
print(i, end = ' ')
i=i+1
在Python2.7中,以下是如何操作的
mantra = 'Always look on the bright side of life'
for c in mantra: print c,
#output
A l w a y s l o o k o n t h e b r i g h t s i d e o f l i f e
python 3.x中的
myjob= 'hacker'
for c in myjob: print (c, end=' ')
#output
h a c k e r
对于Python2.7,我也有同样的问题
只需使用“from\uuuuuu future\uuuuuuu import print\u function”而不加引号即可解决此问题。这确保了Python 2.6和更高版本的Python 2.x可以使用Python 3.x print function。如果您正在使用Python 2.7,请尝试使用此功能:
from __future__ import print_function
与Python 2和Python 3兼容:
sys.stdout.write('mytext')
仅与Python 2兼容
print 'mytext',
仅与Python 3兼容
print('mytext', end='')
基本上,它发生在python2.7中 以下是我的工作代码:
i=5
while(i):
print i,
i=i-1
Output:
5 4 3 2 1
很好的一点!
print(“foo”%bar,end=“”)
在Python2.6中的end=“”
下触发语法错误,就像缺少的引号一样:)如果您发布回溯以最好地诊断收到的异常,这真的很有帮助。明显的语法错误是缺少开头引号。如果修复了这个问题,Python 2中仍然会出现语法错误,如果没有\uuuuu future\uuuuu
导入,它就没有打印功能。除我之外,不是类名的变量应该以小写字母开头。wrt/@Mike,请参阅以获取Python中变量命名和编码风格的完整指南。遵守这些指导原则是一个好主意,因为在Python中,您有权使用基本一致的库,因此即使在您使用其他人的代码时,也可以避免通常的猜测游戏(如PHP)。在将来请求帮助解决错误,尤其是语法错误时,您应该尽量提供您尝试运行的确切代码,而不必重新键入。@Mike-我通常不会再费心键入它,但是我无法这样做,因为代码在远程计算机上
i=5
while(i):
print i,
i=i-1
Output:
5 4 3 2 1