#-*- coding:utf-8 -* #Demo de gestion d'archive via le module shutil de python #Permet de gérer simplement un archivage basique #A noter que shutil permet également la manipulation aisée de #fichiers et de dossiers #Codé avec Python 2.7 import shutil import zipfile #------------------------------------# # Interface avec l'utilisateur # #------------------------------------# def p_question(): """ Cette procedure ne sert qu'à orienté le choix de l'utilisateur puis a appeler la bonne procédure """ reponse = "b" question = "Quelle action effectuée? archivage (a), desarchivage(d)?" while reponse.upper() not in ("A", "D", "Q"): reponse = raw_input(question) if reponse.upper() == "A": p_archivage() elif reponse.upper() == "D": p_desarchivage() #------------------------------------# # Gestion de l'archivage # #------------------------------------# def p_archivage(): """ Cette procedure utilise la methode shutil.make_archive() afin de crééer facilement une archive d'un fichier ou d'un dossier (de maniere totalement recursive en prenant en compte tous les fichiers et sous-dossiers contenus. shutil.make_archive est capable de gérer des archives zip, tar, bztar, gztar. Ici nous utiliserons le zip. """ path_src = raw_input("Merci de saisir un chemin complet:") path_dst = "C:\\archive" format_a = "zip" shutil.make_archive(path_dst, format_a, path_src) #------------------------------------# # Gestion du desarchivage # #------------------------------------# def p_desarchivage(): """ Cette procedure permet d'extraire le contenu d'une archive. Deux solutions possibles: Sous Python 2.7, obligé de faire appel à zipfile Sous Python > 3.2.5, methode unpack_archive disponible """ path_src = raw_input("Merci de saisir un chemin complet:") path_dst = "C:\\archive_unpack" format_a = "zip" #Fonctionne à partir de python 3.2.5 #Permet ainsi de totalement se passer de zipfile #shutil.unpack_archive(path_src, path_dst, format_a) mon_zip = zipfile.ZipFile(path_src, "r") mon_zip.extractall(path_dst) mon_zip.close() #------------------------------------# # Main # #------------------------------------# if __name__ == "__main__": p_question()