Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
451 views
in Technique[技术] by (71.8m points)

python - Disable unique prefix matches for argparse and optparse

When I use Python's argparse or optparse command line argument parser, any unique prefix of an argument is considered valid, e.g.

$ ./buildall.py --help
usage: buildall.py [-h] [-f]

Build all repositories

optional arguments:
  -h, --help   show this help message and exit
  -f, --force  Build dirty repositories

works with --help, --hel, --he for the help option as well as --forc and --fo for the force option.

Can this behavior be turned off somehow? I want to get an error message for incomplete arguments.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The ability to disable abbreviated long options was only added in Python 3.5. From the argparse documentation:

The parse_args() method by default allows long options to be abbreviated to a prefix, if the abbreviation is unambiguous (the prefix matches a unique option) ... This feature can be disabled by setting allow_abbrev to False.

So if you're on Python 3.5, you can create your parser with allow_abbrev=False:

parser = argparse.ArgumentParser(..., allow_abbrev=False)

If you're on optparse or pre-3.5 argparse, you just have to live with abbreviated options.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...