【发布时间】:2013-11-14 21:27:09
【问题描述】:
我有几个运行良好的 python 脚本,但是如果我尝试从 bash 运行它,一个脚本(截至今天早上)开始给我这个错误:
: 没有这样的文件或目录
我可以通过执行python script_name.py 来运行“损坏”脚本,在环顾四周后,我得出的总体想法是,我的 hashbang 行结尾可能已更改(默默地),所以我查看了通过 VI 中的 :set list 选项,工作脚本和损坏脚本的行结束,如本问题所示 -> View line-endings in a text file
两个文件似乎都使用相同的字符($)结束,所以我不知道如何从这里开始。具体来说,如果set list 不是正确的方法,如何实际“看到”结尾的行。
PS:脚本是可执行的,并且 shebang 在那里,我说这只是这 1 个脚本在周末之前工作正常,但从今天早上开始给我这个错误。
-- 编辑:--
通过dos2unix 运行脚本确实让它再次工作,但我想知道有什么方法可以可视化在 VI(M) 中以某种方式结尾的行,或者为什么 Geany 首先以某种方式转换了行结尾(因为我无论如何都不要在dos/windows系统上工作)。
【问题讨论】:
-
你是如何运行它的?你没有忘记shebang吗?
-
运行 'file script_name.py' 如果它是 ASCII 文本可执行文件,使用 CRLF 行终止符,您必须使用 dos2unix 命令转换文件
-
我有一个简单的打印语句作为代码的第一行,然后立即退出。代码本身不是问题,我只是说我可以通过
python scriptname.py调用它来运行它,但不能通过./scriptname.py调用它,它是可执行的。 -
@InbarRose
sudo chmod 0777 filename是永远的答案。 -
要查看行尾样式,请使用vim命令
:set fileformat或简称:set ff。它将显示dos或unix。您可以使用:w ++ff=unix或:set ff=unix转换文件,然后正常保存。