Python使用rarfile解压rar文件报NoneType不可迭代错误如何解决
rarfile解压RAR文件报TypeError: 'NoneType' object is not iterable的解决方案
核心原因
rarfile是Python的封装库,本身不具备RAR解码能力,需要依赖系统安装的UnRAR可执行文件,工具缺失、路径配置错误或代码语法问题都会导致调用工具时返回空值,触发该报错。
排查步骤
- 第一步:安装并配置UnRAR工具
Windows端需先安装WinRAR或单独的UnRAR程序,默认安装路径为C:\Program Files\WinRAR,将该路径添加到系统环境变量PATH后,重启IDE或命令行终端使配置生效。不想配置环境变量的话也可以在代码中手动指定工具路径:rarfile.UNRAR_TOOL = r"C:\Program Files\WinRAR\UnRAR.exe" - 第二步:修正路径转义问题
你第二段代码中解压路径的字符串没有加原始字符串标记r,反斜杠会被Python识别为转义符,导致路径解析错误。需要修改为以下任意一种写法:- 原始字符串:
r"C:\Users\Joanna\Desktop" - 正斜杠分隔:
"C:/Users/Joanna/Desktop" - 转义反斜杠:
"C:\\Users\\Joanna\\Desktop"
- 原始字符串:
- 第三步:校验文件有效性
手动用WinRAR打开目标RAR文件,确认文件无损坏、密码123可正常解压,同时确认解压路径有写入权限,可先更换为D:\test这类无权限限制的路径测试。 - 第四步:清除变量命名冲突
你第一段代码中将变量名命名为rarfile,和导入的库名重名,会覆盖库引用。如果之前运行过第一段代码,需要重启Python解释器清除缓存的变量。
修正后可运行代码
import rarfile # 手动指定UnRAR路径,无需配置环境变量可选加这行 # rarfile.UNRAR_TOOL = r"C:\Program Files\WinRAR\UnRAR.exe" with rarfile.RarFile(r"E:\rarFiles\CH6ED-(09_14_2021 Tue-10_10_33.99).rar") as file: file.extractall(path=r"C:\Users\Joanna\Desktop", pwd="123")
内容的提问来源于stack exchange,提问作者Joanna
相关产品推荐
相关产品推荐

