错误信息说了什么
接管之后的异常里带着 argparse 的原话。运行下面这段程序,看它从两条错误信息里各认出了什么: import argparse class UsageError(Exception): pass class QuietPa
补全:把报错换成人话
接管了 error 之后,补全 main:解析失败时把 err(扮演 stderr)里写一句「用法错误:」加原话,交回 2;成功交回 0。输出三次调用的退出码和 err 的行数。
补全:不认识的单位单独一类
单位表里没有的单位,argparse 不会拦(长度单位太多,没用 choices)。现在它会以 KeyError 崩在字典取值上,被当成「其他错误」。补全 convert:先检查两个单位,不在表里就抛 ValueError,让 main 把
补全:提示里要说出是哪个单位
光交回 3 还不够,用户还得知道是哪个单位不认识。补全 except 分支:把异常里带的那句话写到 err,再交回 3。输出退出码和 err 里的两行(用 / 拼)。
补全:三类错误三个码
把前面几步合起来:用法错 2、单位错 3、其余成功 0。补全 main 里两个 except,输出五次调用的退出码。
什么时候该从文件读
用户要把 200 个长度一次全换算掉。让工具支持 --file 数据.txt,而不是让用户敲 200 次命令,判断依据是【0】。
配置文件解决什么
有用户想加一个自家用的单位「里 = 500 米」。把它放进配置文件而不是改源码,好处是【0】。
配置文件读进来长什么样
用 configparser 读一段 INI 格式的配置。运行下面这段程序,看它把自定义单位并进单位表之后的结果: import configparser LEN = {"m": 1.0, "km"
补全:从文件批量读数值
补全 read_values:从文件对象里逐行读,跳过空行,每行转成浮点数。输出读到的个数和总和。
补全:把配置里的单位并进表
补全 load_units:从 INI 文本的 [len] 段读出所有自定义单位,转成浮点数并进 LEN。输出 3 里换成米、1 km 换成里的结果。