【问题标题】:Errno 13 Permission denied:?Errno 13 权限被拒绝:?
【发布时间】:2015-06-22 13:29:55
【问题描述】:

我正在尝试编写此程序以将目录读取到文件中并读取文件的第一行。如果它找到某些关键字,则重新命名文件,复制文件,并将其更多到相应的目录。

import os
import shutil
import sys

os.chdir('c:\\source')

sourcePattern = '2:I103'
targetDirMt = 'mt'
targetDirF21 = 'F21'


curFile = open(os.path.abspath(os.curdir) + '\\' +'ack_nak', 'r+')

for line in fileinput.input ( curFile ):     #(os.curdir, 'r+')
    if sourcePattern in curFile :
        os.rename(file, '2:I103-'+file)

    if targetDirMt in curFile :
        shutil.move(file,'C:\\target\\mt')

    if targetDirF21 in curFile :
        shutil.move(file,'C:\\target\\F21')

为什么我会得到这个??

Traceback (most recent call last):
  File "C:\Python34\project1.py", line 12, in <module>
    curFile = open(os.path.abspath(os.curdir) + '\\' +'ack_nak', 'r+')
PermissionError: [Errno 13] Permission denied: 'c:\\source\\ack_nak'

【问题讨论】:

  • 这可能是路径的问题,尝试将目录分隔符更改为简单的正斜杠 (/)。喜欢:c:/source/ack_nak
  • 我遇到了同样的错误
  • 这个ack_nak是文件还是目录?您不能open 目录。查看os.walk,这可能会有所帮助。
  • ack nak 是文件 'source' 是目录
  • 为什么你使用r+而不是r来获得权限?

标签: python


【解决方案1】:

尝试使用超级用户 (sudo) 命令。缺乏权限通常可以通过这个来弥补。但是,它会提示您输入用户名和密码,因此您可能需要解决这个问题。

IOError: 13, 'Permission denied' when writing to /etc/hosts via Python - 在这里阅读答案,他们解释了所需的代码。

Open a file as superuser in python - 这是一些更深入的信息。

祝你好运。

【讨论】:

  • 从用户的错误信息中可以看出他运行的是 Windows,而不是 UNIX/Linux/POSIX。
  • @Rob 你看第二个链接和第一个答案了吗?它深入解释了如何在 Windows 中执行类似的操作(以管理员身份运行)来解决相同的问题。请在投反对票之前查看链接。谢谢。