неверный синтаксис - python - PullRequest
2 голосов
/ 13 октября 2011

У меня есть набор аргументов, и все их назначение - «search_and», «search_not», «search_start», «search_then» и «filename»

Код, который я должен отловить:

    if ( options.filename is None) and ( (options.search_and is None) or  (options.search_not is None) or (options.search_start is None) or (options.search_then is None):
        parser.error(usage)
        sys.exit()

Может показаться глупой ошибкой, может кто-нибудь сказать мне, что происходит?

EDIT # 1: Я добавил ')' в конце, чтобы убедиться, что он закрывается правильно, но он по-прежнему говорит неверный синтаксис.

    if ( options.filename is None) and ( (options.search_and is None) or  (options.search_not is None) or (options.search_start is None) or (options.search_then is None)):

EDIT # 2: Вот что у меня есть.

    import optparse from OptionParser
    usage = "useage: %prog [options]"
    parser = OptionParser(usage)
    parser.add_option("-a", "--all", type="string", dest="search_and", help="find ALL lines in the file for the word1 AND word2")
    parser.add_option("-b", "--all", type="string", dest="search_not", help="search and find the lines that contain words1 not word2")
    parser.add_option("-c", "--all", type="string", dest="search_start", help="search and find a line that starts with word1 or word2")
    parser.add_option("-d", "--all", type="string", dest="search_then", help="search and find a line that has word1 followed by word2")
    parser.add_option("-f", "--file", type="string", dest="filename", help="file name"

    if ( options.filename is None) and ( (options.search_and is None) or  (options.search_not is None) or (options.search_start is None) or (options.search_then is None)):

После запуска кода: python script.py -a привет пока

Я получаю неверный синтаксис с оператором if.

Ответы [ 5 ]

4 голосов
/ 13 октября 2011

Строка перед оператором if

parser.add_option("-f", "--file", type="string", dest="filename", help="file name"

не закрывается).

Интерпретатор Python обычно жалуется на такие синтаксические ошибки в следующей строке.ошибка в любой строке, желательно также проверить предыдущую строку

1 голос
/ 13 октября 2011

Это эквивалентно тому, что вы пытаетесь сделать, и может быть слегка более читабельным

if options.filename is None and None in [options.search_and, options.search_not, options.search_start, options.search_then]:
  parser.error(usage)
  sys.exit()
0 голосов
/ 13 октября 2011

В своем первоначальном утверждении "(options.filename is None)" вы должны удалить последний ")" make, заменив этот код на:

 (options.filename is None

Это должно исправить вашу синтаксическую ошибку.

0 голосов
/ 13 октября 2011

if options.filename is None and ((options.search_and is None) or (options.search_not is None) or (options.search_start is None) or (options.search_then is None))

0 голосов
/ 13 октября 2011

Вы пропустили ) до :. Ваш редактор должен ловить подобные ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...