Z optparse
, czy istnieje prosty sposób definiowania opcji negatywnych, np. --no-cleanup
?Ujemne opcje boolowskie --no - cokolwiek w optparse?
zrobiłem to w ten sposób, ale jest to uciążliwe i bug-podatne, zwłaszcza ze względu na czeku None
który jest łatwo zapomnieć i pozostawić na zewnątrz:
#!/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:])
Idealnie chciałabym zrobić coś takiego Getoptions::Long
w Perlu, gdzie mogę zdefiniować opcję cleanup
jako wartość logiczną, a następnie automatycznie dostarczy ona --cleanup
i --no-cleanup
i odpowiednio ustawi moją zmienną logiczną.
argparse ma tę funkcjonalność - czy nie jest to opcja? – jterrace
@jterrace: Używam Pythona v2.6, więc myślę, że nie mam argparse. – Frank
@Frank, argparse działa na python2.6, po prostu nie jest w standardowej bibliotece. Jeśli masz setuptools, 'easy_install argparse' zawsze działa dobrze dla mnie. – mgilson