Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. import rarfile
  2. import os
  3. import shutil
  4. import time
  5.  
  6. ARCHTIVE_DIR = 'archive'
  7. TARGET_DIR = 'target'
  8. PROTECTED_DIR = 'protected'
  9. DAMAGED_DIR = 'damaged'
  10.  
  11. # удалять архивы после распаковки?
  12. REMOVE = True
  13.  
  14. if not os.path.isdir(ARCHTIVE_DIR):
  15.     os.mkdir(ARCHTIVE_DIR)
  16. if not os.path.isdir(TARGET_DIR):
  17.     os.mkdir(TARGET_DIR)
  18. if not os.path.isdir(PROTECTED_DIR):
  19.     os.mkdir(PROTECTED_DIR)
  20. if not os.path.isdir(DAMAGED_DIR):
  21.     os.mkdir(DAMAGED_DIR)
  22.  
  23.  
  24. def process_rar(rar_name, password=None):  
  25.  
  26.     with rarfile.RarFile(rar_name) as archive:
  27.         fname = os.path.basename(rar_name)
  28.         parts = fname.split('.')
  29.         dirname = parts[0]      
  30.         fname = parts[0] + (time.strftime("_%d.%m.%Y"))  + '.' + parts[1]      
  31.         #return
  32.         if archive.needs_password():
  33.             if REMOVE == True:
  34.                 os.remove(rar_name)
  35.             else:
  36.                 os.rename(rar_name, os.path.join(PROTECTED_DIR, fname))
  37.             return
  38.             # if REMOVE == True:
  39.             #    os.remove(rar_name)
  40.         os.mkdir(os.path.join(TARGET_DIR, dirname))
  41.         try:
  42.             archive.extractall(os.path.join(TARGET_DIR, dirname), pwd=password)
  43.         except Exception as e:
  44.             shutil.rmtree(os.path.join(TARGET_DIR, dirname))
  45.             os.remove(rar_name)
  46.             return
  47.             '''
  48.            if REMOVE == True:
  49.                os.remove(rar_name)
  50.            else:
  51.                os.rename(rar_name, os.path.join(DAMAGED_DIR, fname))
  52.            '''
  53.  
  54.     if REMOVE == True:
  55.         os.remove(rar_name)
  56.  
  57.  
  58. for root, dirs, files in os.walk(ARCHTIVE_DIR):
  59.     for name in files:
  60.         try:
  61.           print("Processing " + os.path.join(root, name))
  62.           process_rar(os.path.join(root, name))
  63.         except Exception as e:
  64.             print(e)
  65.             continue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement