补全:文件不存在交回 4
补全 main:打开 --file 指定的文件,打不开就交回 4;打得开就把每行数值加起来打印并交回 0。输出对一个不存在路径的调用结果。
补全:批量换算走完整条路
把批量读、单位表、换算接起来。补全 batch:对文件里每个值做 length(v, src, to),把结果用逗号拼成一行。输出对四个值的换算结果。
入口守卫在防什么
脚本末尾那句 if __name__ == "__main__":,真正在防的情况是【0】。
怎么让 conv 变成一个命令
想让用户直接敲 conv,而不是 python3 conv.py。下面四样里,缺了就一定做不到的是【0】。
直接跑和被 import 差在哪
下面这段程序自己就是入口。运行它,看 __name__ 是什么、守卫里的主流程有没有执行: ran = [] def main(argv): ran.append("main") return 0 i
退出码是怎么交出去的
入口把 main 的返回值交给 sys.exit。运行下面这段程序,看三次不同参数各交出了什么退出码: import sys def main(argv): if not argv: return 2 if
补全:把入口写完整
补全入口那两行:守卫成立时,用 sys.exit 把 main(argv) 的返回值交出去。entry 会把退出码接住打印。
补全:检查 shebang 和执行位
一个文件能不能被 shell 直接执行,看两样:第一行是不是 shebang、权限里有没有执行位。补全 runnable,输出三个文件的判断。
补全:模拟 shell 找命令
shell 按 PATH 里的顺序找同名可执行文件,找到第一个就停。补全 which,输出 conv 会被解析到哪个目录、找不到时给 none。
补全:拆开一行入口声明
打包配置里 console_scripts 一行写成 conv = conv.cli:main,意思是「命令 conv 调用 conv.cli 模块的 main 函数」。补全 parse_entry,把三段拆出来。