Python文件转Shell脚本方法及shuf.py运行报错排查
1. 如何将Python文件转换为Shell脚本?
其实把Python文件改成能像Shell脚本一样直接运行很简单,分几步就能搞定:
- 在Python文件的第一行添加shebang注释,指定Python解释器的路径。推荐用
#!/usr/bin/env python,它会自动在系统的PATH里找可用的Python解释器,比硬写#!/usr/bin/python更灵活;如果你明确要指定某个版本的Python,也可以写#!/usr/bin/python3。 - 给文件添加可执行权限,在终端里运行命令:
chmod +x your_script.py - (可选)如果你想让它更像标准Shell脚本,可以去掉
.py后缀:mv your_script.py your_script,之后直接输入./your_script就能运行了。
2. 解决Linux下运行shuf.py时的解释器报错问题
这个报错我太熟了!问题出在换行符上——你这个shuf.py文件应该是在Windows环境下编辑或者保存过,带了Windows风格的换行符(CR,也就是你看到的^M)。Linux系统用的是LF换行符,所以它会把^M当成了解释器路径的一部分,自然找不到/usr/bin/python^M这个文件啦。
给你几个快速解决的方法:
- 方法一:用
dos2unix工具转换文件格式,终端输入:dos2unix shuf.py。如果系统没装这个工具,Debian/Ubuntu系可以用sudo apt install dos2unix安装,CentOS/RHEL系用sudo yum install dos2unix。 - 方法二:用sed命令直接去掉多余的CR字符,不用装额外工具:
sed -i 's/\r$//' shuf.py - 方法三:用文本编辑器修改换行格式。比如用vim打开文件后,输入
:set fileformat=unix,回车后再输入:wq保存退出;如果用VS Code,直接点击右下角的“CR”选项,切换成“LF”再保存就行。
另外建议你把shebang改成#!/usr/bin/env python,这样能适配不同系统里Python的安装路径,避免因为路径问题再踩坑。改完之后再运行./shuf.py -e cats and dogs应该就正常啦!
内容的提问来源于stack exchange,提问作者Devam Shroff




