Vida Harati
Vida Harati

Reputation: 1

python error when extracting a rar file: 'NoneType' object is not iterable

I am using rarfile to extract code in Spyder(python3.6). When trying to execute the following code

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

I am receiving this error

    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, pwd, 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, pwd)
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py", 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", pwd)
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py", line 3247, in get_cmdline
        self.add_password_arg(cmdline, pwd)
    
      File "D:\Anaconda3\lib\site-packages\rarfile.py", line 3265, in add_password_arg
        cmdline.extend(args)
    
    TypeError: 'NoneType' object is not iterable

What is causing the TypeError? Any help you can provide would be greatly appreciated.

Upvotes: -1

Views: 456

Answers (1)

anthonius adi
anthonius adi

Reputation: 23

Use "with" ,try this, place at the same directory

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

Upvotes: 0

Related Questions