РАЗРЕШЕНО: Синтаксическая ошибка при использовании синтаксического анализа
Имя моей функции - getTile.py. Я пытаюсь использовать функцию argparse в Python, чтобы разобрать вещи из командной строки. Тем не менее, программа не может пройти вторую строку моего сценария. Он продолжает возвращаться в командной строке с этим:
./getTile.py: line 19: syntax error near unexpected token `('
./getTile.py: line 19: `parser = argparse.ArgumentParser()
Я следую краткому учебнику argparse на python.org. Также это моя программа.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("X-coordinate", help="Please put in the X-coordinate of your point.", type=float)
xCoordinate=float(parser.X-coordinate)
def aFunction(var1):
var1 = var1+5
print(a)
afunction(xCoordinate)
1 ответ
Это работает:
In [42]: import argparse
...: parser = argparse.ArgumentParser()
...: parser.add_argument("X_coordinate", help="Please put in the X-coordinate of your point.", type=float)
...: args = parser.parse_args('1.23'.split()) # simulate commandline
...: print(args)
...: xCoordinate=args.X_coordinate # type already converted it to float
...: def aFunction(var1):
...: var1 = var1+5
...: print(a)
...: aFunction(xCoordinate)
...:
...:
Namespace(X_coordinate=1.23)
3.141592653589793
С дестой как X-coordinate
ты должен использовать getattr
потому что это недопустимое имя переменной. Но для позиционного вам не нужно использовать фантазии dest
, Простая строка так же хороша. (Для необязательного, флаг типа "--X-координата" в порядке.)
Я также отбросил ненужное float
,
Во время тестирования я люблю использовать print(args)
чтобы получить четкое представление о том, что делает парсер.
Синтаксическая ошибка не воспроизводится из вашего кода.
Файл в настоящее время выполняется как сценарий оболочки, что приводит к ошибке.
Пытаться:
python ./getTile.py
Или добавьте это в заголовок (1-я строка в getTile.py):
#!/bin/env python
Добавить добавить разрешения на выполнение:
chmod u+x getTile.py
Тогда попробуйте:
./getTile.py