2024-10-02 04:30:07 发布
网友
我正在阅读argparse文档:https://docs.python.org/3.4/library/argparse.html
我通读了ArgumentParser的“parents”文档,其中提到了当多个解析器共享公共arg时使用这个方法。我想知道,什么时候我需要有“几个解析器”在第一位?你知道吗
documentation已经相当简单了:
Rather than repeating the definitions of these arguments, a single parser with all the shared arguments and passed to parents= argument to ArgumentParser can be used
想到一个用例是当您有许多脚本对需要访问用户名和密码的数据库执行不同的操作时。其中一个脚本更改一个表,另一个脚本更改一些权限。。。但是所有这些脚本都需要用户名和密码才能访问数据库,对吗?你知道吗
您可以有一个需要(或解析)用户名和密码的“基本”参数解析器,然后有更多参数的更专门的解析器。例如:
import argparse def make_basic_parser(): parser = argparse.ArgumentParser(description='Basic parser (only username/password).', add_help=False) parser.add_argument(' username', type=str, help='Username to access database') parser.add_argument(' password', type=str, help='Password to access database') return parser def alter_table_parser(): parent = make_basic_parser() parser = argparse.ArgumentParser(description='Alter a table', parents=[parent]) parser.add_argument(' table', type=str, help='Table to alter') return parser if __name__ == "__main__": parser = alter_table_parser() args = parser.parse_args() print("Received arguments: %s" % (args))
运行此操作将导致:
$ python ./stack_055_A.py username foo password bar table baz Received arguments: Namespace(password='bar', table='baz', username='foo')
因此,每次需要用户名和密码时,都可以重用basic\parser。你知道吗
documentation已经相当简单了:
想到一个用例是当您有许多脚本对需要访问用户名和密码的数据库执行不同的操作时。其中一个脚本更改一个表,另一个脚本更改一些权限。。。但是所有这些脚本都需要用户名和密码才能访问数据库,对吗?你知道吗
您可以有一个需要(或解析)用户名和密码的“基本”参数解析器,然后有更多参数的更专门的解析器。例如:
运行此操作将导致:
因此,每次需要用户名和密码时,都可以重用basic\parser。你知道吗
相关问题 更多 >
编程相关推荐