You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动