使用argparse模块像专业人士一样解析参数。如果您使用Python进行开发,您可能会在终端中使用命令,即使只是为了启动Python脚本或使用pip安装Python模块。命令可以简单且单一:$ls命令也可以带参数:$ls示例命令也可以有选项或标志:$ls--color示例有时选项也有参数:$sudofirewall-cmd--list-all--zonehome参数POSIXshell自动将您键入的内容划分为一个数组作为命令。例如,这是一个简单的命令:$lsexample命令ls的位置是$0,参数example的位置是$1。您可以编写一个循环来遍历每个项目。确定它是命令、选项还是参数。并采取相应行动。幸运的是,已经有一个名为argparse的模块。argparse模块易于集成到Python程序中,并具有各种便利功能。例如,如果您的用户更改选项的顺序或使用一个不带参数的选项(称为布尔值,意味着该选项可以打开或关闭设置),然后使用另一个需要参数的选项(例如--colorred),argparse可以处理多种情况。如果您的用户忘记了所需的选项,argparse模块可以提供友好的错误消息。要在您的应用程序中使用argparse,首先定义用户可用的选项。您可以接受多个不同的参数,语法一致且简单。这是一个简单的例子:#!/usr/bin/envpythonimportargparseimportsysdefgetOptions(args=sys.argv[1:]):parser=argparse.ArgumentParser(description="Parsescommand.")parser.add_argument("-i","--input",help="你的输入文件。")parser.add_argument("-o","--output",help="你的目标输出文件。")parser.add_argument("-n","--number",type=int,help="Anumber.")parser.add_argument("-v","--verbose",dest='verbose',action='store_true',help="Verbosemode.")options=parser.parse_args(args)返回选项此示例代码创建一个名为getOptions的函数并告诉Python查看每个可能的参数,前面是一些可识别的字符串(例如--input或-i)。Python找到的任何选项都作为选项对象从函数返回(选项是任意名称,没有特殊含义。它只是一个数据对象,包含函数已解析的所有参数的摘要)。默认情况下,Python将用户提供的任何参数视为字符串。如果需要提取整数(数字),则必须指定选项type=int,如示例代码中的--number选项。如果您有一个仅用于关闭和打开功能的参数,那么您必须使用布尔类型,例如示例代码中的--verbose标志。该选项只持有True或False,用户可以指定是否使用该标志。如果使用,则stored_true被激活。当getOptions函数运行时,您可以使用选项对象的内容,让程序根据用户调用命令的方式做出决定。您可以使用测试打印语句查看选项的内容。将其添加到示例文件的底部:print(getOptions())并使用参数运行代码:$python3./example.py-ifoo-n4Namespace(input='foo',number=4,output=None,verbose=False)示例代码中的选项对象包含用户提供的选项后面的值(或派生的布尔值)。例如,在示例代码中,--number可以通过options.number检索。options=getOptions(sys.argv[1:])ifoptions.verbose:print("打开详细模式")else:print("关闭详细模式")print(options.input)print(options.output)print(options.nu??mber)#通过测试options.verbose是True(意味着用户使用了--verbose标志)还是False(用户没有使用--verbose标志),在此处的Python代码示例中插入布尔选项--verbose,并采取相应措施。帮助和反馈argparse还包括一个内置的--help(-h的缩写)选项,它提供有关如何使用该命令的提示。这是从您的代码派生的,因此生成此帮助系统不需要额外的工作:$./example.py--helpusage:example.py[-h][-iINPUT][-oOUTPUT][-nNUMBER][-v]解析命令。可选参数:-h,--help显示此帮助消息并退出-iINPUT,--inputINPUT您的输入文件。-oOUTPUT,--outputOUTPUT您的目标输出文件。-nNUMBER,--numberNUMBER一个数字。-v,--verbose详细模式。像Pro语法一样进行Python解析。下次您编写Python脚本时,请使用argparse为其提供一些选项。稍后您会感到沾沾自喜,因为您的命令感觉不像是快速草稿脚本,而更像是“真正的”Unix命令!以下是可用于测试的示例代码:#!/usr/bin/envpython3#GNUAll-PermissiveLicense#复制和分发此文件,无论是否修改,#都允许在任何媒体中使用,无需版税,只要版权#notice和thisnotice被保留。此文件按原样提供,#没有任何保证。importargparseimportsysdefgetOptions(args=sys.argv[1:]):parser=argparse.ArgumentParser(description="Parsescommand.")parser.add_argument("-i","--input",help="你的输入文件。")parser.add_argument("-o","--output",help="你的目标输出文件。")解析器。add_argument("-n","--number",type=int,help="Anumber.")解析器。add_argument("-v","--verbose",dest='verbose',action='store_true',help="Verbosemode.")options=parser.parse_args(args)返回选项tions=getOptions(sys.argv[1:])ifoptions.verbose:print("Verbosemodeon")else:print("Verbosemodeoff")print(options.input)print(options.output)print(选项。数字)
