python print end=' '

2019-01-01 05:27发布

I have this python script where I need to run gdal_retile.py

but I get an exception on this line:

if Verbose:
   print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')

The end='' is invalid syntax. I am curious as to why, and what the author probably meant to do.

I'm new to python if you haven't already guessed.


I think the root cause of the problem is that these imports are failing and therefore one must contain this import 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
13条回答
泪湿衣
2楼-- · 2019-01-01 05:42

Try this one if you are working with python 2.7:

from __future__ import print_function
查看更多
与君花间醉酒
3楼-- · 2019-01-01 05:42

we need to import a header before using end='', as it is not included in the python's normal runtime.

from __future__ import print_function

it shall work perfectly now

查看更多
深知你不懂我心
4楼-- · 2019-01-01 05:46

First of all, you're missing a quote at the beginning but this is probably a copy/paste error.

In Python 3.x, the end=' ' part will place a space after the displayed string instead of a newline. To do the same thing in Python 2.x, you'd put a comma at the end:

print "Building internam Index for %d tile(s) ..." % len(inputTiles),
查看更多
忆尘夕之涩
5楼-- · 2019-01-01 05:46

For python 2.7 I had the same issue Just use "from __future__ import print_function" without quotes to resolve this issue.This Ensures Python 2.6 and later Python 2.x can use Python 3.x print function.

查看更多
怪性笑人.
6楼-- · 2019-01-01 05:47

In python 2.7 here is how you do it

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

In python 3.x

myjob= 'hacker'
for c in myjob: print (c, end='')
#output 
h a c k e r 
查看更多
孤独寂梦人
7楼-- · 2019-01-01 05:52

Are you sure you are using Python 3.x? The syntax isn't available in Python 2.x because print is still a statement.

print("foo" % bar, end=" ")

in Python 2.x is identical to

print ("foo" % bar, end=" ")

or

print "foo" % bar, end=" "

i.e. as a call to print with a tuple as argument.

That's obviously bad syntax (literals don't take keyword arguments). In Python 3.x print is an actual function, so it takes keyword arguments, too.

The correct idiom in Python 2.x for end=" " is:

print "foo" % bar,

(note the final comma, this makes it end the line with a space rather than a linebreak)

If you want more control over the output, consider using sys.stdout directly. This won't do any special magic with the output.

Of course in somewhat recent versions of Python 2.x (2.5 should have it, not sure about 2.4), you can use the __future__ module to enable it in your script file:

from __future__ import print_function

The same goes with unicode_literals and some other nice things (with_statement, for example). This won't work in really old versions (i.e. created before the feature was introduced) of Python 2.x, though.

查看更多
登录 后发表回答