【Python 工具人快餐 · 第 7 份 · 完结】
开袋即食
argparse 把「-h/–help」自动生成、类型转换、默认值、互斥组全打包。
5 行代码,你的脚本就能像 Linux 原生命令一样优雅。
5 行标配模板
import argparse, textwrap
parser = argparse.ArgumentParser(description="示例工具:把输入文件转成大写",formatter_class=argparse.RawDescriptionHelpFormatter,epilog=textwrap.dedent("""例子:python tool.py input.txt -o output.txt --upper"""))
parser.add_argument("infile", help="输入文件")
parser.add_argument("-o", "--outfile", default="out.txt", help="输出文件")
parser.add_argument("--upper", action="store_true", help="转大写")
args = parser.parse_args()
场景实拍:大小写转换器
完整脚本(含业务逻辑共 10 行):
import argparse, pathlib
parser = argparse.ArgumentParser(description="大小写转换器")
parser.add_argument("input", help="源文件")
parser.add_argument("-o", "--output", default="result.txt", help="目标文件")
parser.add_argument("--upper", action="store_true", help="转大写,否则转小写")
args = parser.parse_args()text = pathlib.Path(args.input).read_text()
out = text.upper() if args.upper else text.lower()
pathlib.Path(args.output).write_text(out)
print(f"已写入 {args.output}")
运行效果:
$ python tool.py hello.txt -o HELLO.txt --upper
已写入 HELLO.txt
$ python tool.py -h
usage: tool.py [-h] [-o OUTPUT] [--upper] input
...
升级加料
- 类型检查:
parser.add_argument("--limit", type=int, default=10)
- 互斥组:
group = parser.add_mutually_exclusive_group()
- 子命令:
subparsers = parser.add_subparsers(dest="cmd")
打包带走
任何脚本,复制上面 5 行模板,改 3 个 add_argument,
瞬间拥有 --help
、自动类型转换和友好报错,
你就是同事眼中的 CLI 大师!