海口网站建设fwlit,制作网站需要哪些技术,网站门户设计,wordpress 只允许目录
一、使用sys.argv
二、使用argparse模块
更多功能#xff1a;
三、使用getopt模块
四、使用argparse模块来处理布尔型参数
1.使用store_true和store_false动作
2.自定义布尔型参数的处理 一、使用sys.argv
在python中sys.argv是一个包含命令行参数的列表。其中sy…目录
一、使用sys.argv
二、使用argparse模块
更多功能
三、使用getopt模块
四、使用argparse模块来处理布尔型参数
1.使用store_true和store_false动作
2.自定义布尔型参数的处理 一、使用sys.argv
在python中sys.argv是一个包含命令行参数的列表。其中sys.argv[0]是脚本自身的名称从sys.args[1]开始之后的是传递给脚本的参数。这种方式比较简单直接但是对于复杂的参数解析可能不太方便。
假如我们有一个名为test.py的脚本
import sys
print(脚本名称, sys.argv[0])
print(参数列表,sys.atgv[1:])
如果在命令行中运行python test.py arg1 arg2输出的结果为 脚本名称: test.py参数列表: [arg1, arg2]
二、使用argparse模块
argparse模块是python标准库中一个用于命令行参数解析的高级工具。它可以帮助你轻松地定义程序所需的参数包括参数的名称、类型、帮助信息、默认值等并且会自动生成帮助文档
1.首先需要创建一个ArgumentParser对象
import argparse
parseargparse.ArgumentParser(description这是一个示例程序)
2.添加参数可以通过add_argument方法添加各种参数例如添加一个整形的参数和一个字符串类型的可选参数
parser.add_argument(num, typeint, help添加一个整形参数)
parser.add_argument(-s, --string, typestr, defult默认字符串, help一个可选的字符串参数)
3.解析参数
使用parse_args()方法来解析命令行参数
argsparser.parse_args()
print(整形参数, args.num)
print(字符串参数, args.string)
假设这个脚本名为argparse_demo.py在命令行中运行python argparse_demo.py 5 -s custom_string输出将会是 整数参数: 5字符串参数: custom_string
更多功能
1.互斥参数可以定义互斥的参数组。例如定义一个程序要么接受--input-file参数要么接受--input-url参数但不能同时接受两者 input_group parser.add_mutually_exclusive_group(requiredTrue)input_group.add_argument(--input-file, typestr, help输入文件路径)input_group.add_argument(--input-url, typestr, help输入URL)
子命令argparse还支持子命令。例如一个命令行工具可能有不同的子命令如init、start、stop等每个子命令可以有自己的一组参数。 subparsers parser.add_subparsers(destcommand)init_parser subparsers.add_parser(init, help初始化操作)init_parser.add_argument(--config, typestr, help配置文件路径)start_parser subparsers.add_parser(start, help启动操作)start_parser.add_argument(--port, typeint, help端口号)
三、使用getopt模块
getopt模块提供了一种类似于c语言getopt函数的方式来处理命令行参数。它主要通过解析命令行参数列表中的选项以短选项或者长选项的形式来工作 import getoptimport sysdef main(argv):try:opts, args getopt.getopt(argv, hi:o:, [ifile, ofile])except getopt.GetoptError:print(test.py -i inputfile -o outputfile)sys.exit(2)input_file Noneoutput_file Nonefor opt, arg in opts:if opt -h:print(test.py -i inputfile -o outputfile)sys.exit()elif opt in (-i, --ifile):input_file argelif opt in (-o, --ofile):output_file argprint(输入文件:, input_file)print(输出文件:, output_file)if __name__ __main__:main(sys.argv[1:]) 这个脚本接受-i或--ifile和-o或--ofile两个选项用于指定输入文件和输出文件。运行方式类似python test.py -i input.txt -o output.txt。不过argparse在大多数情况下更推荐使用因为getopt相对来说更复杂且功能没有argparse强大。
四、使用argparse模块来处理布尔型参数
1.使用store_true和store_false动作
在argparse模块中当添加参数时可以通过action参数指定参数的行为。对于布尔型参数store_true和store_false是最常用的动作。store_true表示如果该参数在命令行中出现对应的变量将被设置为Truestore_false则相反若参数出现变量被设置为False。 import argparseparser argparse.ArgumentParser(description布尔型参数示例)# 添加一个布尔型参数默认为False当参数出现时为Trueparser.add_argument(--verbose, actionstore_true, defaultFalse, help是否开启详细输出)args parser.parse_args()if args.verbose:print(详细输出已开启)else:print(详细输出未开启)
当在命令行中运行python script.py没有--verbose参数时输出为详细输出未开启。当运行python script.py --verbose时输出为详细输出已开启。
2.自定义布尔型参数的处理
可以通过自定义类型转换函数来处理布尔型参数。这种方式更灵活适用于需要对参数数值进行更复杂验证或者转换的情况 import argparsedef str2bool(v):if isinstance(v, bool):return vif v.lower() in (yes, true, t, y, 1):return Trueelif v.lower() in (no, false, f, n, 0):return Falseelse:raise argparse.ArgumentTypeError(布尔值预期)parser argparse.ArgumentParser(description自定义布尔型参数示例)# 添加一个自定义类型转换的布尔型参数parser.add_argument(--active, typestr2bool, defaultFalse, help是否激活)args parser.parse_args()if args.active:print(已激活)else:print(未激活)
当在命令行中运行python script.py没有--active参数时输出为未激活。当运行python script.py --active true或者python script.py --active yes等合法的真值形式时输出为已激活。当运行带有非法布尔值的命令行参数时如python script.py --active maybe会抛出argparse.ArgumentTypeError异常提示布尔值预期。