Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import rarfile
- import os
- import shutil
- import time
- ARCHTIVE_DIR = 'archive'
- TARGET_DIR = 'target'
- PROTECTED_DIR = 'protected'
- DAMAGED_DIR = 'damaged'
- # удалять архивы после распаковки?
- REMOVE = True
- if not os.path.isdir(ARCHTIVE_DIR):
- os.mkdir(ARCHTIVE_DIR)
- if not os.path.isdir(TARGET_DIR):
- os.mkdir(TARGET_DIR)
- if not os.path.isdir(PROTECTED_DIR):
- os.mkdir(PROTECTED_DIR)
- if not os.path.isdir(DAMAGED_DIR):
- os.mkdir(DAMAGED_DIR)
- def process_rar(rar_name, password=None):
- with rarfile.RarFile(rar_name) as archive:
- fname = os.path.basename(rar_name)
- parts = fname.split('.')
- dirname = parts[0]
- fname = parts[0] + (time.strftime("_%d.%m.%Y")) + '.' + parts[1]
- #return
- if archive.needs_password():
- if REMOVE == True:
- os.remove(rar_name)
- else:
- os.rename(rar_name, os.path.join(PROTECTED_DIR, fname))
- return
- # if REMOVE == True:
- # os.remove(rar_name)
- os.mkdir(os.path.join(TARGET_DIR, dirname))
- try:
- archive.extractall(os.path.join(TARGET_DIR, dirname), pwd=password)
- except Exception as e:
- shutil.rmtree(os.path.join(TARGET_DIR, dirname))
- os.remove(rar_name)
- return
- '''
- if REMOVE == True:
- os.remove(rar_name)
- else:
- os.rename(rar_name, os.path.join(DAMAGED_DIR, fname))
- '''
- if REMOVE == True:
- os.remove(rar_name)
- for root, dirs, files in os.walk(ARCHTIVE_DIR):
- for name in files:
- try:
- print("Processing " + os.path.join(root, name))
- process_rar(os.path.join(root, name))
- except Exception as e:
- print(e)
- continue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement