Python脚本执行报错:unrecognized arguments与command not found问题排查
问题原因及修复方案
问题原因
报错核心是脚本里的换行反斜杠\后存在空格、制表符或不可见控制字符,导致bash没把第二行的--dataset=CIFAR100识别为python mypython.py的参数,反而将其当作独立命令执行;同时第一行的Python命令因未收到预期参数,触发argparse的参数错误提示。
另外如果脚本是Windows环境下编辑的,换行符为\r\n(Windows格式),bash会把\r当作参数一部分,也会引发类似问题。
修复方法
- 修正换行反斜杠格式:确保反斜杠
\是所在行的最后一个字符,后面不能有任何空格、制表符或其他字符,修改后的脚本如下:
python mypython.py \ --dataset=CIFAR100
(注:\后面直接按回车换行,不要加任何空格)
- 取消换行,参数写在同一行:直接把命令和参数放在一行,彻底规避换行符问题:
python mypython.py --dataset=CIFAR100
- 转换脚本换行符格式(Windows编辑的脚本适用):用以下命令将脚本转换为Unix格式换行符:
dos2unix run.sh
转换后再执行脚本即可。
内容的提问来源于stack exchange,提问作者Jerry Hu
相关产品推荐
相关产品推荐

