使用argparse模块可以轻松处理命令行参数。下面是完整的Python使用argparse模块处理命令行参数的攻略:
导入argparse模块
首先需要导入argparse模块。在Python中使用import语句导入argparse即可:
import argparse
创建解析器
创建解析器对象时,需要使用ArgumentParser类。例如:
parser = argparse.ArgumentParser(description='Process some integers.')
该类的构造函数中可以传入一些参数,这些参数的含义如下:
- prog:程序名,默认是sys.argv[0],即当前脚本的文件名。
- usage:用法,默认是自动从添加到解析器中的参数生成。
- description:在参数帮助文档之前显示的文本。
- epilog:在参数帮助文档之后显示的文本。
- parents:一个ArgumentParser对象的列表,这些对象的参数也应该包含在内。
- formatter_class:定制化帮助文档输出格式。
- prefix_chars:可选参数的前缀,默认是“-”。
- fromfile_prefix_chars:从文件中读取参数时的前缀,默认是“@”。
- argument_default:参数的全局默认值。
- conflict_handler:解决冲突的策略,默认为“error”,还可以设置为“resolve”和“ignore”。
- add_help:是否添加帮助信息,默认为True。
添加参数
调用add_argument()方法来添加需要解析的命令行参数。例如:
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
该方法中的参数解释如下:
- name or flags:参数名或选项名称。有两种情况:
- name:指定参数名称,例如“foo”。
- flags:指定选项名称,例如“-f”或“--foo”。
- action:解析器遇到此选项时发生的动作。有以下几个值可选:
- “store”:将参数保存到一个变量中。
- “store_const”:保存一个常量到变量。
- “store_true”:如果遇到此选项,设置变量为True。
- “store_false”:如果遇到此选项,设置变量为False。
- “append”:将参数添加到列表中。
- “append_const”:并不往列表中添加参数,append一次添加指定的常量值。
- “count”:计算选项出现的次数。
- “help”:打印帮助信息。
- “version”:打印版本信息。
- nargs:解析器应该接受的参数数量。有以下几个值可选:
- N:一个整数,用于表示接受的参数的数量(想要一个必要命令行参数需要将nargs设置为1)。
- “?”:表示0或1个参数。
- “*”:表示0或多个参数。
- “+”:表示1或多个参数。
- argparse.REMAINDER:表示将剩余的命令行参数全部保存到该变量中。
- const:当action被设置成“store_const”或“append_const”时使用。
- default:如果未提供该选项,则使用的默认值。如果action被设置为“store”并且没有提供,默认值是None。
- type:与该选项关联的数据类型。有以下几个值可选:
- int:将输入字符串转换为整数。
- float:将输入字符串转换为浮点数。
- string:不转换值,保留为字符串。
- choices:该参数可设置一个集合限定命令行参数的范围。如果设置,其参数值必须在集合内,如果不在,用户将得到错误警告。例如,在用户名(username)和密码(password)的情况下,我们可以设置用户名(username)及其特定值必须在["tom","david","jerry"]内时才能正确运行命令行。
- required:为该选项添加该标志会使解析器只有在提供了该选项时才停止解析。此标志仅适用于选项。
- help:选项或参数简要说明。
- metavar:在使用argparse之后,在使用–help显示的参数名称默认采用dest的名称,但是该参数可以自定义,默认使用大写字母。
解析命令行参数
使用parse_args()方法解析命令行参数。例如:
args = parser.parse_args()
完整示例1
下面是一个使用argparse模块的示例,它接受一个整数列表并对其进行求和:
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Calculate the sum of integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
args = parser.parse_args()
print(sum(args.integers))
在命令行中运行以下命令:
python test.py 1 2 3 4 5
输出结果为:
15
完整示例2
下面是一个使用argparse模块的示例,它可以将输入的字符串进行大写或小写转换,并且可以选择输出到文件或终端:
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Convert text to upper or lower case.')
parser.add_argument('text', type=str, help='text to convert')
parser.add_argument('-u', '--upper', action='store_true', help='convert to upper case')
parser.add_argument('-l', '--lower', action='store_true', help='convert to lower case')
parser.add_argument('-o', '--output', type=str, help='output file name')
args = parser.parse_args()
if args.upper:
result = args.text.upper()
elif args.lower:
result = args.text.lower()
else:
result = args.text
if args.output:
with open(args.output, 'w') as f:
f.write(result)
else:
print(result)
在命令行中运行以下命令:
python test.py "Hello World" -u -o output.txt
输出结果为:
HELLO WORLD
同时在当前目录下会生成一个名为 output.txt
的文件,其内容也为 HELLO WORLD
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python如何使用argparse模块处理命令行参数 - Python技术站