Показват се публикациите с етикет script. Показване на всички публикации
Показват се публикациите с етикет script. Показване на всички публикации

24.04.2019 г.

Python script to extract multiple rar file's

# TODO: Add check if file exists if try to extract and if true delete them before extract!

# Import some module's
import os
import sys
# Require to install patool module
import patoolib
import multiprocessing as mp

# Hard code param if not add from termonal
if len(sys.argv) > 1:
    assert os.path.exists(sys.argv[1])
    PATH_TO_FILE = sys.argv[1]
else:
    PATH_TO_FILE = r"D:\Movies\Man.with.a.Plan.S01.HDTV.x264-Scene"


def extract_function(line):
    dir = os.path.dirname(line)
    # This function use for extract file, need to use multiprocessing
    try:
        patoolib.extract_archive(line, outdir=dir)
    except:
        raise "Some error acquire when try to extract {line}".format(line=line)
    else:
        print("{line} was successfully extract!".format(line=line))


class MainCLass:

    def __init__(self, path_to_search, param):
        self.search_param = param
        self._path_to_Search = path_to_search

    def search_to_path(self):
        """
        Method used for search zip files in folder
        :return: List with file conteins rar
        """
        list_with_files = []
        for root, dirname, filename in os.walk(self._path_to_Search):
            for file in filename:
                if file.endswith(self.search_param):
                    list_with_files.append(os.path.join(root, file))
        return list_with_files

    def show_file_from_list(self):
        """
        Method use for conteins result of file with suffix rar and yield result
        :return:
        """
        list_with_file = self.search_to_path()
        for line in list_with_file:
            yield line

    def unrar_file_from_list(self):
        my_file = list(i for i in self.show_file_from_list())
        with mp.Pool() as pool:
            result = pool.map(extract_function, my_file)
            return result

    def delete_rar_archive(self):
        # Delete rar arhive! do after unrar them
        for line in self.show_file_from_list():
            os.unlink(line)


if __name__ == '__main__':
    zip_file = MainCLass(PATH_TO_FILE, 'rar')
    # uncoment to unrar file's
    zip_file.unrar_file_from_list()
    # uncoment to delte rar file's
    # zip_file.delete_rar_archive()

7.04.2015 г.

Python search for duplicated files


##################################################
#   Search for duplicated files without,                                         #
#   meaningless file exstension                                                     #
#     NOT EDIT BY HAND!!!                                                   #
##################################################

#IMPORT MODULES FOR SCRIPT

import hashlib, os
from itertools import *
from operator import itemgetter

#THIS USE FOR GIVE MD5 FOR FILE'S

md = hashlib.md5()
#Directory = os.getcwd()
#ADD NEEDED LIST
Dir = "C:\\SCRIPT"
_File = []       #CONTAINED PATH FOR FILE
_File_H = []     #CONTAINED MD5 CODE FOR FILE
_duplicated = []   #CONTAINED DUPLIATED
_duplicated_sravnqva = [] #NEED FOR ZIP
subdirlist = []    #MAY DELETED IF YOU WON USED FOR FUNCTION search_file

#SEARCH WITH OS.LISTDIR NOT WORKING FOR MOMENT
# def search_file(Dir):

#  for file in os.listdir(Dir):
#   if os.path.isfile(file):
#    yield os.path.join(Dir,file)
#   else:
#    subdirlist.append(os.path.join(Dir, file))
#    try:
#     for subdir in subdirlist:
#      search_file(subdir)
#    except:
#     print "Somting wrong"

#SEARCH WITH OS.WALK

def search_os_walk(Dir):
    for path,dirlist,filelist in os.walk(Dir):
        for fn in filelist:
            yield os.path.join(path,fn)

#FUNCTION USE FOR ENCRIPT FILE TO MD5
def md_5(filePath):
    with open(filePath, 'rb') as fh:
        m = hashlib.md5()
        while True:
            data = fh.read(8192)
            if not data:
                break
            m.update(data)
        return m.hexdigest()

#SEARCH FOR FILE AND APPEND THEM TO REQUIRED LIST (LOOKED ABOVE FOR #DESCRIPTION'S )

for file in search_os_walk(Dir):
     _File.append(file)
     _File_H.append(md_5(file))

for f,z in (izip(_File, _File_H)):
    if z in _duplicated:
         _duplicated_sravnqva.append(z)
         _duplicated.append(z)

print "*"*80
_Dupliated =  [x[0] for x in zip(_File, _File_H) if x[1] in _duplicated_sravnqva]
one= []
two= []
for i in _Dupliated:
    one.append(i)
    two.append(md_5(i))

#RESULT IN DICTIONARI, NEEDED FOR FUNCTION GROUPBY

d = dict(zip(one,two))
di = sorted(d.iteritems(), key=itemgetter(1))
for k, g in groupby(di, key=itemgetter(1)):
#IF YOU WHANT TO SHOW IN COLUMN UNCHECK BOTTOM ROW'S
    # for i,z  in enumerate(map(itemgetter(0), g)):
    #  print i,z
    print "Duplicated ", map(itemgetter(0), g)
raw_input()