Python3: анализатор параметров, проверьте, была ли установлена ​​логическая опция - PullRequest
0 голосов
/ 15 октября 2011

Я хочу, чтобы в моей программе была опция true / false (-w).Если опция установлена, я буду сортировать вывод.

У меня добавлена ​​следующая опция:

parser.add_option("-w", "--without-replacement",
                  action="store_true", dest="replacement", default=False,
                  help="outpt lines without replacement")

replacement = options.replacement

if replacement
    if self.lines:
        self.lines.sort()
        last = self.lines[-1]
        for i in range(len(self.lines)-2, -1, -1):
            if last == self.lines[i]: del self.lines[i]
            else: last=self.lines[i]

Когда я запускаю программу, я получаю следующую ошибку:

  File "randline.py", line 65
    if replacement
                 ^
SyntaxError: invalid syntax

Можете ли вы помочь мне понять правильный синтаксис?Правильно ли запрограммирован файл parser.add_option?

Ответы [ 2 ]

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

Синтаксическая ошибка в том, что вы забыли двоеточие после 'if replace'.

Вы должны вызвать парсер, прежде чем станут доступны опции:

options = parser.parse_args()

Если в конце вы пытаетесь удалить дубликаты в цикле for, попробуйте следующее:

if replacement and self.lines:
    self.lines = list(set(self.lines))
    self.lines.sort()
2 голосов
/ 15 октября 2011
if replacement

должно быть:

if replacement:

обратите внимание на двоеточие (:)

...