提取rar文件时出现python错误:“ NoneType”对象不可迭代

问题描述

我正在使用rarfile提取Spyder(python3.6)中的代码。尝试执行以下代码

import rarfile
rar_file = "d:\\test\\reza3.rar"
rar_file = rarfile.RarFile(rar_file)
rar_file.extractall(pwd='123')

我收到此错误

    In [25]: rar_file = "d:\\test\\reza3.rar"
    
    In [26]: rar_file = rarfile.RarFile(rar_file)
    
    In [27]: rar_file.extractall(pwd='321')
    Traceback (most recent call last):
    
      File "<ipython-input-27-61fee530b204>",line 1,in <module>
        rar_file.extractall(pwd='321')
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py",line 847,in extractall
        dst = self._extract_one(inf,path,pwd,not inf.is_dir())
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py",line 912,in _extract_one
        return self._make_file(info,dstfn,set_attrs)
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py",line 925,in _make_file
        with self.open(info,"r",pwd) as src:
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py",line 783,in open
        return self._file_parser.open(inf,pwd)
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py",line 1241,in open
        return self._open_unrar(self._rarfile,inf,line 1294,in _open_unrar
        cmd = setup.open_cmdline(pwd,rarfile,fn)
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py",line 3235,in open_cmdline
        cmdline = self.get_cmdline("open_cmd",line 3247,in get_cmdline
        self.add_password_arg(cmdline,line 3265,in add_password_arg
        cmdline.extend(args)
    
    TypeError: 'nonetype' object is not iterable

是什么原因导致TypeError?您能提供的任何帮助将不胜感激。

解决方法

使用“ with”,尝试将其放置在同一目录中

from rarfile import RarFile
with RarFile('reza3.rar','r') as extr:
     extr.extractall(pwd='<your_password>')