RarFile/[WinError 5]:拒绝访问

2024-04-29 09:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个脚本,它将自动从rar或zip文件夹中提取文件并将它们放在某个地方,以便更快地组织文件。包括规范的相关章节:

import shutil
import os
import eyed3
import glob
import zipfile
import rarfile
import unrar
import patoolib

## create zipfile object of the downloaded album and get a tracklist

rarfile.UNRAR_TOOL=r'C:\Users\John\AppData\Local\Programs\Python\Python36-32'

downloads = glob.glob("C:\\Users\\John\\Downloads\\*")
music_zip = max(downloads, key=os.path.getctime)
if os.path.splitext(music_zip)[-1] == '.zip':
    music_folder = zipfile.ZipFile(music_zip)
elif os.path.splitext(music_zip)[-1] == '.rar':
    music_folder = rarfile.RarFile(music_zip)

print(music_zip)
print(music_folder)
temporary_album_folder = 'C:\\Users\\John\\Downloads\\temporary_album_folder'
if not os.path.exists(temporary_album_folder):
    os.makedirs(temporary_album_folder)

# patoolib.extract_archive(music_zip, outdir=temporary_album_folder)
# temp_list = os.listdir(temporary_album_folder)
# tag = eyeD3.load(temp_list[0])
# artist = tag.getArtist()
# album = tag.getAlbum()

# print(os.getcwd())

os.chdir(temporary_album_folder)
music_folder.extractall()
music_folder.close()
print(temporary_album_folder)

当我运行这个程序时,我希望它能成功地将RAR的内容提取到\Downloads中的一个临时文件夹中。相反,当我尝试在控制台中运行时收到的错误消息是:

^{pr2}$

我知道很多其他人也问过类似的关于winerror5和Python的问题,所以为了提前解决可能的共同建议:我正在管理模式下运行终端,关闭了UAC,取消了对相关文件夹和子文件夹的完全权限。有人知道为什么会发生这种情况吗?有没有人知道可能的解决办法?非常感谢你的帮助。在


Tags: pathimport文件夹albumosmusicfolderzip
1条回答
网友
1楼 · 发布于 2024-04-29 09:29:15

参考:Eryksun的评论

这不是安全许可问题。UNRAR_TOOL应该是UNRAR程序的可执行名称(可选的完整路径)。子流程.Popen失败,因为您正在尝试执行“Python36-32”目录。——昨天是埃里克森

windowsapi有一些相当无用的错误代码映射。在NT API内部,本例中的错误是STATUS_FILE_is_A_DIRECTORY(0xc0000ba),这一点再明显不过了,但它被Windows映射到error_ACCESS_DENIED(0x0005),这会误导您认为这是文件或对象权限的问题。——昨天是埃里克森

相关问题 更多 >