技术与生活 / 一篇记录
命令行脚本也需要一个清楚的接口
命令行入口应对参数类型与缺省值给出明确约束。
参数解析不仅是把字符串取出来,还包括类型、默认值和错误提示。argparse 可以统一生成帮助信息,让脚本在参数错误时尽早结束,而不是运行到中间才失败。
从一个例子看起
以下示例使用 Python 3,文件路径和输入值均为练习样本。
import argparse
p = argparse.ArgumentParser()
p.add_argument('--count', type=int, default=1)
print(p.parse_args([]).count)
测试整数、非法字符串和 –help。
排查时再往前走一步
设计默认值时考虑是否会意外处理过多数据。对危险或成本较高的任务,明确要求目标参数通常比悄悄选取一个默认目录更合适。
参数解析完毕之后,可以立即做一轮业务前置检查:输入是否可读、输出位置是否合理、数量是否在允许范围。尽早失败能减少无效工作,也让调用者更快看到可执行的提示。
参数校验通过后,文件权限和业务约束仍需分别验证。
参考:Python 文档。