您的位置:首页 > 房产 > 家装 > html免费网页模板_湖南政务服务网_中国新闻今日头条_seo自动推广软件

html免费网页模板_湖南政务服务网_中国新闻今日头条_seo自动推广软件

2025/1/2 1:22:55 来源:https://blog.csdn.net/weixin_56054625/article/details/144200004  浏览:    关键词:html免费网页模板_湖南政务服务网_中国新闻今日头条_seo自动推广软件
html免费网页模板_湖南政务服务网_中国新闻今日头条_seo自动推广软件

1. argparse模块简介

argparse 是Python标准库中的一个模块,用于解析命令行参数。它能够帮助开发者轻松编写用户友好的命令行接口,使得程序可以通过命令行参数来接受用户输入,并根据这些输入执行相应的功能。

2. argparse模块的主要功能

  • 定义命令行参数:包括位置参数和可选参数,以及它们的类型、默认值和帮助信息。

  • 解析命令行参数:自动解析命令行输入,并将其转换为相应的数据类型。

  • 生成帮助和使用信息:自动生成帮助信息,用户可以通过 -h--help 选项查看。

3. 使用argparse模块的步骤

  1. 创建ArgumentParser对象:这是解析器的核心对象。

  2. 添加参数:使用add_argument方法添加命令行参数。

  3. 解析参数:使用parse_args方法解析命令行输入。

  4. 使用参数:解析后的参数可以作为属性访问并在程序中使用。

4. 示例代码

import argparse
​
def main():parser = argparse.ArgumentParser(description='这是一个示例程序')parser.add_argument('filename', type=str, help='文件的名称')parser.add_argument('--verbose', '-v', action='store_true', help='输出详细信息')parser.add_argument('--count', '-c', type=int, default=1, help='重复次数')args = parser.parse_args()
​if args.verbose:print(f'Processing file: {args.filename}')print(f'Repeat count: {args.count}')for i in range(args.count):print(f'Processing {args.filename} - iteration {i + 1}')
​
if __name__ == '__main__':main()
    

运行命令:

python script.py example.txt -v -c 3

输出案例:

Processing file: example.txt
Repeat count: 3
Processing example.txt - iteration 1
Processing example.txt - iteration 2
Processing example.txt - iteration 3

5. 参数类型和处理布尔选项

  • 位置参数:必须提供,按位置传递。

  • 可选参数:不必须提供,通常以 --- 开头。

布尔选项通常使用action='store_true'action='store_false'

6. 设置默认值

可以使用default参数来设置默认值。

7. 帮助信息

argparse会自动生成帮助信息。用户可以使用-h--help选项来查看。

8. 使用场景

argparse在深度学习代码中,特别是在train.pytest.py中,经常用于传递大量的参数,使得参数管理集中化,方便查找和修改。

例如我现在有一个.py文件,我现在定义了好多好多函数(为了方便我只定义了两个),我现在需要集中管理我传入的参数,使用argparse就会非常方便,对于本.py文件中的传参一目了然。

import argparseparser = argparse.ArgumentParser(description='test')parser.add_argument('--spring', action='store_true', default=False, help='nothing.')
parser.add_argument('--summer', type=int, default=6, help='num.')
parser.add_argument('--fall', type=int, default=11, help='num.')
parser.add_argument('--winter', type=int, default=100, help='Number of epochs to train.')args = parser.parse_args()
# FLAGS, unparsed = parser.parse_known_args() 这种解析方法用的比较少,有兴趣可以了解一下def sum_function(num2sum_1,num2sum_2):sum_result = num2sum_1 + num2sum_2return sum_resultdef multiply_function(num2multiply_1,num2multiply_2):multiply_result = num2multiply_1 * num2multiply_2return multiply_resultprint('args.spring的值是{}'.format(args.spring))
print('args.summer的值是{}'.format(args.summer))
print(sum_function(args.summer,args.fall))
print(multiply_function(args.summer,args.winter))

运行结果:

# 运行结果
args.spring的值是False
args.summer的值是6
17
600

对本文件中的函数进行传参,无论有多少参数需要传,我们只要在argparse中写好需要传的参数,在传参时传入args.参数名,需要修改传参值时,统一在argparse中进行修改即可,这样就方便了参数的管理。

9. 修改参数值

  • 直接修改default的值。

  • 通过命令行运行时指定参数值。

  • 在IDE的运行配置中进行配置。

10. 进阶用法

argparse还提供了许多进阶的功能,包括位置参数和可选参数的区分、互斥参数、参数默认值、参数类型、参数选择和参数验证等。

当然有,下面我将提供一个更详细的argparse模块的使用案例,包括一些进阶用法,以帮助您更好地理解和使用argparse

📘 argparse模块详细使用案例

1. 导入模块和创建解析器
import argparse
​
# 创建ArgumentParser对象
parser = argparse.ArgumentParser(description='详细使用案例')

2. 添加位置参数和可选参数
# 添加位置参数
parser.add_argument('input', help='输入文件的路径')
​
# 添加可选参数
parser.add_argument('--output', '-o', type=str, default='output.txt', help='输出文件的路径(默认为output.txt)')
parser.add_argument('-v', '--verbose', action='store_true', help='显示详细输出')

3. 添加互斥参数组
# 创建互斥参数组
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--train', action='store_true', help='训练模型')
group.add_argument('--test', action='store_true', help='测试模型')

4. 添加参数选择和参数验证
# 添加参数选择
parser.add_argument('--mode', choices=['train', 'test', 'deploy'], help='运行模式')
​
# 添加参数验证
def positive_int(value):ivalue = int(value)if ivalue <= 0:raise argparse.ArgumentTypeError('%s is not a positive integer' % value)return ivalue
​
parser.add_argument('--epochs', type=positive_int, default=10, help='训练的轮数,必须是一个正整数')

5. 解析参数
# 解析命令行参数
args = parser.parse_args()

6. 使用参数
# 使用参数
print(f'输入文件:{args.input}')
print(f'输出文件:{args.output}')
if args.verbose:print('详细输出已开启!')
if args.train:print('正在训练模型...')
elif args.test:print('正在测试模型...')
print(f'运行模式:{args.mode}')
print(f'训练轮数:{args.epochs}')

7. 完整代码
import argparse
​
def main():# 创建ArgumentParser对象parser = argparse.ArgumentParser(description='详细使用案例')# 添加位置参数parser.add_argument('input', help='输入文件的路径')# 添加可选参数parser.add_argument('--output', '-o', type=str, default='output.txt', help='输出文件的路径(默认为output.txt)')parser.add_argument('-v', '--verbose', action='store_true', help='显示详细输出')# 创建互斥参数组group = parser.add_mutually_exclusive_group(required=True)group.add_argument('--train', action='store_true', help='训练模型')group.add_argument('--test', action='store_true', help='测试模型')# 添加参数选择parser.add_argument('--mode', choices=['train', 'test', 'deploy'], help='运行模式')# 添加参数验证def positive_int(value):ivalue = int(value)if ivalue <= 0:raise argparse.ArgumentTypeError('%s is not a positive integer' % value)return ivalueparser.add_argument('--epochs', type=positive_int, default=10, help='训练的轮数,必须是一个正整数')# 解析命令行参数args = parser.parse_args()# 使用参数print(f'输入文件:{args.input}')print(f'输出文件:{args.output}')if args.verbose:print('详细输出已开启!')if args.train:print('正在训练模型...')elif args.test:print('正在测试模型...')print(f'运行模式:{args.mode}')print(f'训练轮数:{args.epochs}')
​
if __name__ == '__main__':main()
8. 运行示例
python script.py input.txt --output result.txt -v --train --mode test --epochs 20

输出:

输入文件:input.txt
输出文件:result.txt
详细输出已开启!
正在训练模型...
运行模式:test
训练轮数:20

这个案例展示了argparse模块的多种用法,包括位置参数、可选参数、互斥参数组、参数选择和参数验证等。希望这个详细的案例能够帮助您更好地理解和使用argparse模块。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com