我使用 optparse 来解析我的脚本的命令选项。我有 -f 和 -c 选项,它们都需要一个选项参数。但是当它丢失时,它会将下一个选项视为当前选项的选项参数。例如
./myScript -f -c
这会将“-c”视为“-f”的选项参数,而不是抱怨“-f”和“-c”缺少选项参数。对于其他正常情况,它工作正常。
感谢您提供任何信息和解决方案!
更新: 解决方法,通过使用argparse,可以避免这个问题。它退出时出现错误,抱怨缺少选项参数。
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)