使用optparse
,是否有一种简单的方法来定义否定选项,例如--no-cleanup
?
我是这样做的,但它很麻烦且容易出错,尤其是由于None
检查很容易忘记和遗漏:
#!/bin/env python
from __future__ import print_function
import sys
import optparse
def main(argv):
parser = optparse.OptionParser("usage: %prog [options]")
parser.add_option("--no-cleanup",
dest = "cleanup",
action = "store_false",
help = "do cleanup at end?")
(opts, args) = parser.parse_args()
if opts.cleanup == None:
opts.cleanup = True
# do stuff ...
if opts.cleanup:
print("Cleaning up!", file = sys.stderr)
else:
print("Not cleaning up", file = sys.stderr)
if __name__ == "__main__":
main(sys.argv[1:])
理想情况下,我想Getoptions::Long
在 Perl 中做类似的事情,在那里我可以将一个选项定义cleanup
为布尔值,然后它会自动提供--cleanup
并--no-cleanup
相应地设置我的布尔变量。