Python print end = ''
У меня есть этот python script, где мне нужно запустить gdal_retile.py
но я получаю исключение в этой строке:
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 *
Ответы
Ответ 1
Вы уверены, что используете 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 для end=" "
:
print "foo" % bar,
(обратите внимание на итоговую запятую, это заставляет ее заканчивать строку пробелом, а не строкой)
Если вы хотите получить больше контроля над выходом, рассмотрите возможность использования sys.stdout
напрямую. Это не сделает никакой специальной магии с выходом.
Конечно, в несколько недавних версиях Python 2.x(2.5 должен иметь его, не уверен в 2.4), вы можете использовать модуль __future__
, чтобы включить его в ваш файл script:
from __future__ import print_function
То же самое происходит с unicode_literals
и некоторыми другими приятными вещами (например, with_statement
). Это не будет работать в действительно старых версиях (т.е. Созданных до того, как была введена функция) Python 2.x.
Ответ 2
Как насчет этого:
#Only for use in Python 2.6.0a2 and later
from __future__ import print_function
Это позволяет использовать функцию стиля print
Python 3.0 без необходимости вручную редактировать все вхождения print
:)
Ответ 3
В Python 2.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
В питоне 3.х
myjob= 'hacker'
for c in myjob: print (c, end=' ')
#output
h a c k e r
Ответ 4
Прежде всего, вам не хватает цитаты в начале, но это, вероятно, ошибка копирования/вставки.
В Python 3.x часть end=' '
поместит пробел после отображаемой строки вместо новой строки. Чтобы сделать то же самое в Python 2.x, вы положили запятую в конец:
print "Building internam Index for %d tile(s) ..." % len(inputTiles),
Ответ 5
Я думаю, что он использует Python 3.0, и вы используете Python 2.6.
Ответ 6
Это просто версия. Поскольку 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
Ответ 7
Похоже, у вас просто отсутствует двойная кавычка открытия. Попробуйте:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
Ответ 8
Я думаю, что автор, вероятно, имел в виду:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
Он пропустил начальную цитату после 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),
(спасибо Игнасио).
Ответ 9
Для python 2.7 у меня была такая же проблема
Просто используйте " из __future__ import print_function" без кавычек для решения этой проблемы. Это обеспечивает Python 2.6 и более поздние версии. Python 2.x может использовать функцию печати Python 3.x.
Ответ 10
Попробуйте это, если вы работаете с python 2.7:
from __future__ import print_function
Ответ 11
Даже сегодня я получал ту же самую ошибку. И я испытал интересную вещь.
Если вы используете python 3.x и все еще получаете ошибку, это может быть причиной:
У вас несколько версий python, установленных на одном диске. И когда вы назначаете кнопку f5 в окне оболочки python (от ver. < 3.x) всплывает
Сегодня я получал такую же ошибку и заметил эту вещь. Поверьте мне, когда я выполню свой код из соответствующего окна оболочки (версии 3.x), я получил удовлетворительные результаты
Ответ 12
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
, я успешно выполнил
Ответ 13
нам нужно импортировать заголовок перед использованием end=''
, так как он не включен в обычное время выполнения python.
from __future__ import print_function
он отлично работает сейчас