Python初学者必知必会:命令行参数处理利器argparse!
大家好,我是猫哥。今天要和大家分享一个在Python编程中特别实用的知识点:如何优雅地处理命令行参数。想必大家都用过命令行工具吧?比如pip安装包时的pip install package_name,这里的package_name就是一个命令行参数。今天我们就来学习如何用Python的argparse模块来处理这些参数!
为什么要学习命令行参数处理?
想象一下,如果你写了一个图片处理程序,每次运行都要在代码里修改文件路径,多麻烦啊!如果能像这样运行就好了:
python resize_image.py input.jpg --width 800 --height 600
有了argparse,这就变得超级简单!
快速入门
先来看个最简单的例子:
import argparse
# 创建参数解析器
parser = argparse.ArgumentParser(description='一个简单的命令行工具')
# 添加参数
parser.add_argument('name', help='输入你的名字')
parser.add_argument('--age', type=int, help='输入你的年龄')
# 解析参数
args = parser.parse_args()
# 使用参数
print(f'你好,{args.name}!')
if args.age:
print(f'你今年{args.age}岁')
运行方式:
python hello.py 小明 --age 18
输出结果:
你好,小明!
你今年18岁
参数类型详解
argparse支持多种参数类型,来看看:
import argparse
parser = argparse.ArgumentParser(description='参数类型示例')
# 位置参数(必填)
parser.add_argument('input_file', help='输入文件路径')
# 可选参数
parser.add_argument('--output', '-o', help='输出文件路径')
# 数字参数
parser.add_argument('--num', type=int, default=10, help='数字参数')
# 布尔标志
parser.add_argument('--verbose', action='store_true', help='是否显示详细信息')
# 选择参数
parser.add_argument('--mode', choices=['fast', 'normal', 'slow'], default='normal',
help='运行模式:fast/normal/slow')
args = parser.parse_args()
print(args)
小贴士:使用-h或--help可以查看参数说明:
python script.py -h
实战案例:图片处理工具
来写一个实用的图片处理工具:
import argparse
from PIL import Image
def process_image(input_path, output_path, width, height, mode):
"""处理图片的主函数"""
try:
# 打开图片
img = Image.open(input_path)
# 调整大小
if width and height:
img = img.resize((width, height))
# 处理模式
if mode == 'gray':
img = img.convert('L')
elif mode == 'sepia':
# 复古效果
img = img.convert('RGB')
width, height = img.size
pixels = img.load()
for x in range(width):
for y in range(height):
r, g, b = pixels[x, y]
tr = int(0.393*r + 0.769*g + 0.189*b)
tg = int(0.349*r + 0.686*g + 0.168*b)
tb = int(0.272*r + 0.534*g + 0.131*b)
pixels[x, y] = (min(tr,255), min(tg,255), min(tb,255))
# 保存图片
img.save(output_path)
print(f"图片处理完成!已保存至: {output_path}")
except Exception as e:
print(f"处理图片时出错: {str(e)}")
def main():
parser = argparse.ArgumentParser(description='图片处理工具')
# 添加参数
parser.add_argument('input', help='输入图片路径')
parser.add_argument('--output', '-o', help='输出图片路径')
parser.add_argument('--width', type=int, help='输出图片宽度')
parser.add_argument('--height', type=int, help='输出图片高度')
parser.add_argument('--mode', choices=['normal', 'gray', 'sepia'],
default='normal', help='处理模式')
args = parser.parse_args()
# 如果没有指定输出路径,自动生成
ifnot args.output:
args.output = f'processed_{args.input}'
# 处理图片
process_image(args.input, args.output, args.width, args.height, args.mode)
if __name__ == '__main__':
main()
使用技巧和注意事项
参数命名要清晰明确
记得添加help说明
合理使用默认值
参数分组可以让帮助信息更清晰
例如,给参数分组:
parser = argparse.ArgumentParser()
# 创建参数组
input_group = parser.add_argument_group('输入选项')
output_group = parser.add_argument_group('输出选项')
# 添加参数到不同组
input_group.add_argument('--input', '-i')
output_group.add_argument('--output', '-o')
练习题
编写一个文件重命名工具,支持批量重命名文件
创建一个计算器工具,支持基本的数学运算
实现一个文本处理工具,能够统计字数、行数等信息
今日要点总结
argparse是Python标准库中处理命令行参数的利器
支持位置参数和可选参数
可以设置参数类型、默认值和帮助信息
支持参数分组,可以让帮助信息更清晰
适合开发命令行工具和脚本
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问猫哥哦。祝大家学习愉快,Python学习节节高!
领取专属 10元无门槛券
私享最新 技术干货