为何我的argparse程序参数解析后不执行后续生成XML的代码?
问题排查及解决方法
- 首先确认
args.e参数的取值是否符合判断要求
当前代码中e被定义为字符串类型的必填位置参数,Python中非空字符串的布尔值均为True,只有当你传入的e参数值是空字符串时,if args.e才会判定为False,跳过XML生成逻辑。
如果你的需求是将e作为触发生成逻辑的开关,建议修改参数定义为布尔类型可选参数:
my_parser.add_argument('-e', action='store_true', help='send sms?')
修改后运行脚本时加上-e参数即可触发生成逻辑,不需要额外传值。
- 确认运行时传入了完整的参数
你定义了6个必填的位置参数,运行脚本时必须按顺序传入所有参数,缺少任意一个参数argparse都会直接输出帮助信息并终止程序,不会走到XML生成逻辑。参考正确运行命令格式:
python 你的脚本文件名.py 账号用户名 账号密码 接收短信手机号 发送方手机号 短信内容 yes
最后一个参数对应e的取值,只要不是空字符串就会进入后续逻辑。
- 排查运行时异常
如果参数传入无误仍未生成XML,可以在if args.e代码块开头添加测试打印语句,确认代码块是否被执行:- 如果代码块未执行,说明
args.e的取值仍为空,检查参数传入的顺序和取值是否正确 - 如果代码块被执行但未生成文件,大概率是运行时抛出异常,最常见的原因是未安装lxml依赖,可执行
pip install lxml安装后重试,另外也需要确认当前运行脚本的目录有写入文件的权限。
- 如果代码块未执行,说明
内容的提问来源于stack exchange,提问作者Aby_g
相关产品推荐
相关产品推荐

