РАЗРЕШЕНО: Синтаксическая ошибка при использовании синтаксического анализа

Имя моей функции - 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
Другие вопросы по тегам