AttributeError: 'NoneType' object has no attribute 'write'

Traceback (most recent call last):
  File "d:\Projetcs\python\discordTgr\tokengrabber\2test.py", line 6, in <module>
    zf.write(dirname)
AttributeError: 'NoneType' object has no attribute 'write'
import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w").extractall(pwd='P4$$W0rd') 
for dirname, subdirs, files in os.walk("Spammer"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()

Ответы (2 шт):

Автор решения: farkon00

Это означает, что extractall ничего не возвращает. В документации написано, что что-бы записать что-то в архив надо обращаться к объекту типа ZipFile.

Пример из документации:

with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')

Если не понимаете что такое with : ZipFile('spam.zip', 'w').write('eggs.txt')

Если нужно создать новую папку, то тоже используется write. ZipFile('spam.zip', 'w').write("somefile", "directory to create\\somefile") и дальше если нужна пустая папка, удаляете созданный файл.

→ Ссылка
Автор решения: gil9red

Попробуйте так:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
zf.extractall(pwd='P4$$W0rd') 
for dirname, subdirs, files in os.walk("Spammer"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
→ Ссылка