1

我使用 optparse 来解析我的脚本的命令选项。我有 -f 和 -c 选项,它们都需要一个选项参数。但是当它丢失时,它会将下一个选项视为当前选项的选项参数。例如

./myScript -f -c

这会将“-c”视为“-f”的选项参数,而不是抱怨“-f”和“-c”缺少选项参数。对于其他正常情况,它工作正常。

感谢您提供任何信息和解决方案!

更新: 解决方法,通过使用argparse,可以避免这个问题。它退出时出现错误,抱怨缺少选项参数。

4

1 回答 1

1

optparse从 python 2.7 开始已弃用,因此您应该使用argparse内置此行为的模块:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-f')
parser.add_argument('-c')

parser.parse_args(['-f', 'f_val', '-c', 'c_val'])   #works as expected
parser.parse_args(['-f', '-c'])                     #errors as expected

如果您只剩下 python < 2.7 和optparse模块,您可以在解析阶段之后通过自定义检查轻松完成:

parser = OptionParser('usage')
parser.add_option("-f", "--ff", dest="f_value")
parser.add_option("-c", "--cc", dest="c_value")

(options, args) = parser.parse_args()

if options.f_value == '-c':
    print 'error: -f requires an argument'
    exit(1)
于 2013-02-26T18:08:56.263 回答