使用argparse读取txt文件时出现无输出、变量未绑定、命令行运行异常问题
问题修复点
1. 无输出问题
- 原有
if __name__判断拼写错误,正确规则为if __name__ == "__main__",且下方print语句缩进错误,被判定为注释内容的从属行,永远不会执行 - 外层多余的
with open(args.filename)没有实际业务逻辑,你通过命令行传入的文件名参数完全没有被用到,统计逻辑硬编码写死了读取rooms.txt
2. UnboundLocalError报错问题
- 代码存在变量名拼写错误:统计A字符时误用了未定义的变量
W,应改为对应统计A的变量 - 函数内部修改全局定义的A/B/C/D变量时,没有提前声明
global,Python会将其识别为未定义的局部变量,触发引用前赋值的报错,你提到的P变量报错属于同类问题,要么是变量名拼写错误,要么是没有声明全局变量
3. argparse运行异常问题
- 统计逻辑没有接收命令行传入的文件名参数,硬编码的文件名和你传入的参数无关,导致命令行传参完全不生效
修正后完整代码
import argparse def count_target_chars(file_path): count_a = 0 count_b = 0 count_c = 0 count_d = 0 with open(file_path, "r", encoding="utf-8") as f: lines = f.readlines() for line in lines: count_a += line.count("A") count_b += line.count("B") count_c += line.count("C") count_d += line.count("D") return count_a, count_b, count_c, count_d if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("filename", help="要统计字符的文本文件路径") args = parser.parse_args() a, b, c, d = count_target_chars(args.filename) print(f'total:\nA: {a} B: {b} C: {c} D: {d}')
运行方式
命令行执行 python 你的脚本文件名.py 要统计的文本文件路径 即可输出统计结果。
内容的提问来源于stack exchange,提问作者Endre
相关产品推荐
相关产品推荐

