Python3:选项解析器,检查是否已设置布尔选项

时间:2011-10-15 05:41:44

标签: python python-3.x python-2.x

我想对我的程序使用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 个答案:

答案 0 :(得分:4)

语法错误是因为您在'if replacement'之后忘记了冒号。

在选项可用之前,您必须实际调用解析器:

options = parser.parse_args()

如果您尝试在最后删除for循环中的重复项,请尝试以下操作:

if replacement and self.lines:
    self.lines = list(set(self.lines))
    self.lines.sort()

答案 1 :(得分:2)

if replacement

需要:

if replacement:

请注意冒号(: