从Vim运行Python脚本时权限被拒绝

时间:2013-05-26 04:02:57

标签: python vim

在我的.vimrc中,有这一行:

map <F4> :w<cr>:!python %<cr>

当我使用vim /home/debian/rd.py编辑python文件并在写入文件后按 F4 时,我收到此错误:

/bin/bash: /home/debian/rd.py: Permission denied
shell returned 126
Press ENTER or type command to continue
1 gphoto2  --get-all-files
1     0x670x700x680x6f0x740x6f0x320xc20xa00x200x2d0x2d0x670x650x740x2d0x610x6c0x6c0x2d0x660x690x6c0x650x730xa
2 gphoto2  --get-all-files
2 0x670x700x680x6f0x740x6f0x320x200x200x2d0x2d0x670x650x740x2d0x610x6c0x6c0x2d0x660x690x6c0x650x730xa

Press ENTER or type command to continue

结果是对的,为什么Permission denied我得到了结果?

编辑:

我经常使用gphoto2 --get-all-files将数码相机照片放到我的电脑上,总有一天命令 gphoto2 --get-all-files无法运行。我对这种现象感到困惑,当我擦除它并再次输入它时,它可以工作。我将两个看起来相同的命令粘贴到一个文件中,请从here下载 并将其另存为\tmp\compare.txt

档案内容

gphoto2  --get-all-files
gphoto2  --get-all-files

当我打开vim在python上写一个小代码来查看原因时,

rd.py的内容

myfile=open("/tmp/compare.txt","rb")
for x,line in enumerate(myfile.readlines()):
   print  x+1,line,
   str1=""
   for char in line:
       str1=str1+hex(ord(char))
   print x+1,str1

完成后按 F4 ,我得到输出,原因是命令中的&nbsp

1      0x670x700x680x6f0x740x6f0x320xc20xa00x200x2d0x2d0x670x650x740x2d0x610x6c0x6c0x2d0x660x690x6c0x650x730xa    

2      0x670x700x680x6f0x740x6f0x320x200x200x2d0x2d0x670x650x740x2d0x610x6c0x6c0x2d0x660x690x6c0x650x730xa    

str1为0xa0,其中&nbsp超过str2

2 个答案:

答案 0 :(得分:1)

从该错误消息的外观来看,似乎Vim和Python都不对此问题负责。此外,你的python脚本似乎调用了第四个程序,gphoto2,所以此时一切都有点混乱。

在不了解rd.py的内容的情况下,此处的任何人都可以真正帮助您做出疯狂的推测。我建议您将其内容粘贴到您的问题中,或者找到一种方法让我们可以使用它。

答案 1 :(得分:0)

您是否有权为现有登录信息写入rd.py?我怀疑:w失败,因为你没有写权限,但是下一个命令!python rd.py会运行,给出结果。

尝试$ sudo vim /home/debian/rd.py并保存在vim

另一种可能性是rd.py上没有设置可执行位。