У меня есть этот скрипт python, где мне нужно запустить 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 *
__future__
импорта.ClassNames
должны начинаться с строчной буквы.Ответы:
Вы уверены, что используете Python 3.x? Синтаксис недоступен в Python 2.x, потому что
print
он все еще является оператором.в Python 2.x идентичен
или
т.е. как вызов печати с кортежем в качестве аргумента.
Это явно плохой синтаксис (литералы не принимают аргументы ключевых слов). В Python 3.x
print
это фактическая функция, поэтому она также принимает аргументы ключевого слова.Правильная идиома в Python 2.x для
end=" "
:(обратите внимание на последнюю запятую, она завершает строку пробелом, а не переносом строки)
Если вам нужен больший контроль над выводом, рассмотрите возможность использования
sys.stdout
напрямую. Это не повлияет на результат.Конечно, в несколько последних версиях Python 2.x (он должен быть в 2.5, не уверен насчет 2.4), вы можете использовать
__future__
модуль, чтобы включить его в файле сценария:То же самое и с
unicode_literals
некоторыми другими приятными вещами (with_statement
например). Однако это не будет работать в действительно старых версиях (т.е. созданных до того, как эта функция была введена) Python 2.x.источник
dpkg -p python
и это была версия 2.xx.xx. Большое вам спасибо, я применил предложение поместить его в форме,print "foo" %bar,
и оно отлично сработало.print foo, bar
иprint (foo, bar)
в Python 2. Первый - этоprint
оператор с двумя элементами в списке «аргументов»; последний - этоprint
оператор с одним кортежем в списке аргументов.print("foo" % bar, end=" ")
не будет работать, такbar
как не определен; так чтоbar
в твоем примере? (По крайней мере, для меня с Python 3.7)Как насчет этого:
Это позволяет использовать
print
функцию стиля Python 3.0 без необходимости вручную редактировать все вхожденияprint
:)источник
В Python 2.7 вот как вы это делаете
В python 3.x
источник
h a c k e r
между символами есть пробелы. Я использую Python 3.7.3, и у меня вообще нет пробеловend=''
.Прежде всего, вам не хватает цитаты в начале, но, вероятно, это ошибка копирования / вставки.
В Python 3.x
end=' '
часть будет помещать пробел после отображаемой строки вместо новой строки. Чтобы сделать то же самое в Python 2.x, вы должны поставить запятую в конце:источник
Я думаю, он использует Python 3.0, а вы используете Python 2.6.
источник
print("foo" % bar, end = " ")
вызывает синтаксическую ошибку в Python 2.6 ниже,end = " "
как это делает отсутствующая цитата :)Это всего лишь версия. Начиная с Python 3.x печать на самом деле является функцией, поэтому теперь она принимает аргументы, как и любая обычная функция.
Это
end=' '
просто означает, что вам нужен пробел после конца оператора вместо символа новой строки. В Python 2.x вам нужно будет сделать это, поставив запятую в конце оператора печати.Например, в среде Python 3.x:
Дадим следующий результат:
В то время как:
В качестве вывода выдаст:
источник
print()
может быть полезна, поскольку там можно увидеть значение'\n'
аргумента по умолчаниюend
: docs.python.org/3/library/functions.html#printПохоже, вам просто не хватает начальной двойной кавычки. Пытаться:
источник
Думаю, автор имел в виду:
После него отсутствует начальная цитата
print(
.Обратите внимание , что по состоянию на Python 3.0 ,
print
является функция , в отличие от заявления, если вы используете старые версии Python эквивалент будет:В
end
означает параметр , что линия получает' '
в конце , а не символ новой строки. Эквивалент в более ранних версиях Python:(спасибо Игнасио).
источник
,
в конец сделает это.ИСПОЛЬЗОВАТЬ ::
python3 filename.py
У меня была такая ошибка, потому что на моем диске установлены две версии python, а именно python2.7 и python3. Ниже был мой код:
когда я запускаю его по команде,
python lines.py
я получаю следующую ошибкукогда я запускаю его командой, которую
python3 lines.py
я выполнил успешноисточник
Для python 2.7 у меня была такая же проблема. Просто используйте " from __future__ import print_function " без кавычек, чтобы решить эту проблему. Это гарантирует, что Python 2.6 и более поздние версии Python 2.x могут использовать функцию печати Python 3.x.
источник
Попробуйте это, если вы работаете с python 2.7:
источник
Даже я сегодня получал ту же ошибку. И я пережил интересную вещь. Если вы используете python 3.x и по-прежнему получаете ошибку, это может быть причиной:
Сегодня у меня была такая же ошибка, и я заметил это. Поверьте, когда я выполняю свой код из правильного окна оболочки (версии 3.x), я получаю удовлетворительные результаты
источник
нам нужно импортировать заголовок перед использованием
end=''
, поскольку он не включен в обычную среду выполнения python.теперь он будет работать отлично
источник
Совместим как с Python 2, так и с 3 :
Совместим только с Python 2
Совместим только с Python 3
источник