Не получается совместить теги b и F.

Voice6021

Новичок
Пользователь
Ноя 20, 2020
4
0
1
Есть переменная a, куда пользователь вводит путь к его zip-архиву, защищенный паролем. Есть переменная b, куда пользователь вводит пароль к архиву, путь к которому был указан им ранее. Нужно, как можно было догадаться требуется расшифровать архив пользователя. Изначально попробывал решить подобным образом:
Python:
import zipfile

zip_way1 = input('Enter the way for your zip-archive: ')
zip_password1 = input('Enter the password for your zip-archive: ')
zip_archive1 = zipfile.ZipFile(F'{zip_way1}', 'r')
zip_archive1.extractall(pwd=F'{zip_password1}')
Однако, меня встретило разочарование, программа выдала сделующую ошибку. Как я понял, она хочет тип bytes, а не str.
Traceback (most recent call last):
File "/home/user/PycharmProjects/pythonbash_broke/copy.py", line 6, in <module>
zip_archive1.extractall(pwd=F'{zip_password1}')
File "/usr/lib/python3.7/zipfile.py", line 1616, in extractall
self._extract_member(zipinfo, path, pwd)
File "/usr/lib/python3.7/zipfile.py", line 1669, in _extract_member
with self.open(member, pwd=pwd) as source, \
File "/usr/lib/python3.7/zipfile.py", line 1450, in open
raise TypeError("pwd: expected bytes, got %s" % type(pwd).__name__)
TypeError: pwd: expected bytes, got str

Решил добавить к тегу F тег b в шестой строке, однако программа вновь выдала ошибку:
File "/home/user/PycharmProjects/pythonbash_broke/copy.py", line 6
zip_archive1.extractall(pwd=bF'{zip_password1}')
^
SyntaxError: invalid syntax


Что делать, чтобы эта фиговина работала?
Python 3.7
LinuxDebian10.03
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 648
472
83
попробуйте так
Python:
import zipfile

zip_way1 = input('Enter the way for your zip-archive: ')
zip_password1 = bytes(input('Enter the password for your zip-archive: ').encode('utf-8'))
zip_archive1 = zipfile.ZipFile(F'{zip_way1}', 'r')
zip_archive1.extractall(pwd=zip_password1)
 
  • Мне нравится
Реакции: Voice6021

Voice6021

Новичок
Пользователь
Ноя 20, 2020
4
0
1
попробуйте так
Python:
import zipfile

zip_way1 = input('Enter the way for your zip-archive: ')
zip_password1 = bytes(input('Enter the password for your zip-archive: ').encode('utf-8'))
zip_archive1 = zipfile.ZipFile(F'{zip_way1}', 'r')
zip_archive1.extractall(pwd=zip_password1)
Спасибо, помогли.
 

Форум IT Специалистов