And*_*ius 2 python argparse python-3.x
是否可以在可选参数上添加一些子节?因此,用户更容易理解哪个参数与哪个参数相关?
我的意思是,例如psql --help,输出以下内容(我不知道psql解析库使用了哪些参数,但仅作为所需输出的一个好例子):
Usage:
psql [OPTION]... [DBNAME [USERNAME]]
General options:
-c, --command=COMMAND run only single command (SQL or internal) and exit
-d, --dbname=DBNAME database name to connect to (default: "oerp")
-f, --file=FILENAME execute commands from file, then exit
-l, --list list available databases, then exit
-v, --set=, --variable=NAME=VALUE
set psql variable NAME to VALUE
(e.g., -v ON_ERROR_STOP=1)
-V, --version output version information, then exit
-X, --no-psqlrc do not read startup file (~/.psqlrc)
-1 ("one"), --single-transaction
execute as a single transaction (if non-interactive)
-?, --help[=options] show this help, then exit
--help=commands list backslash commands, then exit
--help=variables list special variables, then exit
Input and output options:
-a, --echo-all echo all input from script
-b, --echo-errors echo failed commands
-e, --echo-queries echo commands sent to server
-E, --echo-hidden display queries that internal commands generate
-L, --log-file=FILENAME send session log to file
-n, --no-readline disable enhanced command line editing (readline)
-o, --output=FILENAME send query results to file (or |pipe)
-q, --quiet run quietly (no messages, only query output)
-s, --single-step single-step mode (confirm each query)
-S, --single-line single-line mode (end of line terminates SQL command)
Output format options:
-A, --no-align unaligned table output mode
-F, --field-separator=STRING
field separator for unaligned output (default: "|")
-H, --html HTML table output mode
-P, --pset=VAR[=ARG] set printing option VAR to ARG (see \pset command)
-R, --record-separator=STRING
record separator for unaligned output (default: newline)
-t, --tuples-only print rows only
-T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)
-x, --expanded turn on expanded table output
-z, --field-separator-zero
set field separator for unaligned output to zero byte
-0, --record-separator-zero
set record separator for unaligned output to zero byte
Connection options:
-h, --host=HOSTNAME database server host or socket directory (default: "/var/run/postgresql")
-p, --port=PORT database server port (default: "5432")
-U, --username=USERNAME database user name (default: "oerp")
-w, --no-password never prompt for password
-W, --password force password prompt (should happen automatically)
For more information, type "\?" (for internal commands) or "\help" (for SQL
commands) from within psql, or consult the psql section in the PostgreSQL
documentation.
Report bugs to <pgsql-bugs@postgresql.org>.
Run Code Online (Sandbox Code Playgroud)
并且有类似的部分General options,Input and output options依此类推。
使用argparse,我只能得到positional arguments和optional arguments选项。是否可以对可选参数做一些小节?
如评论中所述,您需要ArgumentParser.add_argument_group()。
此处复制的示例代码已修改:
import argparse
parser = argparse.ArgumentParser(prog='PROG')
group = parser.add_argument_group('group')
group.add_argument('--foo', help='foo help')
group.add_argument('bar', help='bar help')
other_group = parser.add_argument_group('other group')
other_group.add_argument('baz', help='baz help')
parser.print_help()
Run Code Online (Sandbox Code Playgroud)
输出:
usage: PROG [-h] [--foo FOO] bar baz
optional arguments:
-h, --help show this help message and exit
group:
--foo FOO foo help
bar bar help
other group:
baz baz help
Run Code Online (Sandbox Code Playgroud)