Reputation: 23
I'm a newbie in python. I'm trying to write a simple python script to unzip multiple password protected files in a directory. Passwords are stored in a text file.
This is what i have come up with,
import subprocess
import os
currentFile = __file__
realPath = os.path.realpath(currentFile)
dirPath = os.path.dirname(realPath)
dirName = os.path.basename(dirPath)
sevenz = dirPath + '/binaries/7z.exe'
files = []
for filename in os.listdir():
ext = os.path.splitext(filename)[-1].lower()
if ext == '.rar':
files.append(filename)
if ext == '.zip':
files.append(filename)
if ext == '.7z':
files.append(filename)
if ext == '7z.001':
files.append(filename)
with open('passwords.txt', 'r') as f:
passwords = [line.rstrip() for line in f]
for password in passwords:
for file in files:
subprocess.run([sevenz, 'x', '-y', '-p', password, file])
And below is the content of passwords.txt file,
zip
7z
rar
Running above code gives this error,
7-Zip 21.07 (x64) : Copyright (c) 1999-2021 Igor Pavlov : 2021-12-26
Scanning the drive for archives:
ERROR: The system cannot find the file specified.
zip
I'm not sure what i'm doing wrong here. Any help would be appreciated!
Upvotes: 0
Views: 573
Reputation: 782508
The password should be concatenated to -p
, not a separate argument.
subprocess.run([sevenz, 'x', '-y', '-p'+password, file])
Upvotes: 2