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

0 投票
2 回答
571 浏览
提问于 2025-04-17 04:22

我想给我的程序添加一个真/假选项(-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 个回答

2
if replacement

需要变成:

if replacement:

注意冒号 (:)

4

这个语法错误是因为你在'if replacement'后面忘记加冒号了。

你必须先调用解析器,选项才会变得可用:

options = parser.parse_args()

如果你想在最后的for循环中去除重复项,可以试试这个:

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

撰写回答