在Python中自动解压受密码保护的rar文件

Igo*_*nyy 2 python rar

最近开始学习python,出现了一个问题....我需要解压rar文件,该文件是受密码保护的,但是密码写在文件名中,该文件在压缩包中。如此〜300次。如何、用什么、在哪里实施?例如有一个压缩包383442389.rar,它有两个文件,pass-1337643656.data(名称包含压缩包密码)和下面的压缩包)

Cyb*_*lle 5

我不确定你问题的所有背景,但我会尽力回答你。

  1. 你说你需要解压一个文件.rar,但这是不可能的,如果文件是.rar你需要解压

  2. 如果您只需要解压缩 .zip

类似的东西应该有效

from zipfile import ZipFile
with ZipFile('test1.zip', 'r') as myzip:
    myzip.extractall(pwd='<password>')
Run Code Online (Sandbox Code Playgroud)
  1. 以 .rar 为例

pip install rarfile(仅在 python 3 中安装)

from rarfile import RarFile
with RarFile('test2.rar', 'r') as myrar:
    myrar.extractall(pwd='<password>')
Run Code Online (Sandbox Code Playgroud)
  1. 您提到密码位于 .rar 中,就像文件名一样
    • pass-1337643656.data
    • 您可以使用列出文件的名称

RarFile.namelist() 按名称返回存档成员列表。

所以你可以使用 split 来提取密码

s = 'pass-1337643656.data'
s.split('-')[1].split('.')[0]
print(s)
Run Code Online (Sandbox Code Playgroud)

'1337643656'

您还可以使用正则表达式来提取该内容

结论。

使用 .rar 的完整解决方案可能是

from rarfile import RarFile
with RarFile('test2.rar', 'r') as myrar:
    file_names = myrar.namelist()
    pass_file = list(filter(lambda k: 'pass' in k, l))[0]
    pass = pass_file.split('-')[1].split('.')[0]
    myrar.extractall(pwd=pass)
Run Code Online (Sandbox Code Playgroud)

参考。