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