python3脚步参数(argparse模块)

argparse 是 Python 标准库中用于命令行参数解析的模块。它可以让你轻松编写用户友好的命令行接口,自动生成帮助信息,并且支持位置参数、可选参数、类型检查、默认值、互斥组等高级功能。

一、基本用法

1.创建解析器

import argparse

parser = argparse.ArgumentParser(description="这是一个示例程序")

 

2. 添加参数

# 位置参数
parser.add_argument("input", help="输入文件路径")

# 可选参数
parser.add_argument("-o", "--output", help="输出文件路径", default="out.txt")

# 类型限制
parser.add_argument("--count", type=int, default=1, help="重复次数")

# 布尔开关
parser.add_argument("--verbose", action="store_true", help="是否详细输出")

 

3. 解析参数

args = parser.parse_args()
print("输入文件:", args.input)
print("输出文件:", args.output)
print("重复次数:", args.count)
print("详细模式:", args.verbose)

 

4.运行

python demo.py input.txt -o result.txt --count 3 --verbose

 

二.写成函数

import argparse

def parse_arguments():
    parser = argparse.ArgumentParser(description="this is test")
    parser.add_argument('--test', action="store_true", help="test")
    args = parser.parse_args()
    return args

if __name__ == "__main__":
    args = parse_arguments()
    if args.test:
        print('test')

  

 三.大部分功能演示

#!/usr/bin/env python3

import argparse

def parse_arguments():
    #allow_abbrev=False  # 关闭缩写
    parser = argparse.ArgumentParser(description="test for argparse",allow_abbrev=False)
    parser.add_argument('-b', action="store_true", help="Boolean type")
    parser.add_argument('-s', type=str, help="string type")
    parser.add_argument('--strings', type=str,nargs='+', help="string type")
    parser.add_argument("--count", type=int, default=1, help="Integer type")
    parser.add_argument('-n','--numbers', type=int, nargs='+', help='输入多个数字')
    parser.add_argument('--input', type=argparse.FileType('r'), help='输入文件路径')
    parser.add_argument('--output', type=argparse.FileType('w'), help='输出文件路径')
    args = parser.parse_args()
    return args


if __name__ == '__main__':
    args = parse_arguments()
    print(args)
    if args.b:
        print("this is boolean.")
        exit(0)
    if args.s:
        strings=args.s
        print(f"this is string:{strings}.")
        exit(0)
    if args.strings:
        strings=args.strings
        print(f"this is strings:{strings}.")
        exit(0)
    if args.count:
        integers=args.count
        print(f"this is integer:{integers}.")
    if args.numbers:
        integers=args.numbers
        print(f"this is integers:{integers}.")
        exit(0)
    if args.input:
        content = args.input.read()
        print(f"输入文件内容:\n{content}")
        args.input.close()
        exit(0)
    if args.output:
        # 覆盖写入,最好不要用
        with args.output as output_file:
            args.output.write("这是输出文件的内容\n")
        exit(0)

  

posted @ 2025-08-19 21:33  铿锵有力自信且坚定  阅读(22)  评论(0)    收藏  举报