最近开始学习python,但有一个问题....我需要解压缩受密码保护的 rar 文件,但密码写在文件名中,该文件位于存档中。如此~300次。如何、用什么以及在哪里实施? 例如,有一个存档 383442389.rar,它有两个文件,pass-1337643656.data(名称包含存档密码(和以下存档(
我不确定你问题的所有上下文,但我会尽力回答你。
-
您说您需要解压缩文件.rar,但这是不可能的,如果文件.rar则需要解压缩
-
如果您只需要解压缩.zip
这样的东西应该有效
from zipfile import ZipFile
with ZipFile('test1.zip', 'r') as myzip:
myzip.extractall(pwd='<password>')
- 在.rar的情况下
pip install rarfile(只安装在python 3中(
from rarfile import RarFile
with RarFile('test2.rar', 'r') as myrar:
myrar.extractall(pwd='<password>')
- 您提到密码出现在.rar中,就像文件名一样
- pass-1337643656.data
- 您可以使用以下方法列出文件的名称
RarFile.namelist(( 按名称返回存档成员的列表。
因此,您可以使用拆分来提取密码
s = 'pass-1337643656.data'
s.split('-')[1].split('.')[0]
print(s)
"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)
参考。
- https://python-unrar.readthedocs.io/en/v0.3/rarfile.html
- https://www.w3schools.com/python/ref_string_split.asp
- 根据内容筛选字符串列表
- https://docs.python.org/2/library/zipfile.html
- 在 Python 中解压缩文件