N-PN White-Hat Project
[Python] Encoder les noms de ses fichiers - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72)
+--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27)
+--- Sujet : [Python] Encoder les noms de ses fichiers (/showthread.php?tid=2745)



[Python] Encoder les noms de ses fichiers - InstinctHack - 23-02-2013

Salut,

J'ai eu besoin d'encoder les noms de mes fichiers, car je devrais les sauvegarder sur un support dont le système de fichier n'autorisé pas certains caractères utilisés par quelque uns de mes fichiers, alors plutot que faire comme l'abrutit moyen et de renommer à la main j'ai coder ça :

ça parcours le répertoire "transfert" qui se trouve dans le répertoire courant (modifier à votre sauce :p ) et cela de manière récursif, et encoder nom de fichiers mais également répertoire, j'ai juste faire en sorte de conserver les extensions pour les fichiers qui en possède.

critiques, conseil, et autres, je prend Wink
Code PYTHON :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os,base64,sys

def parcours_rep(rep,number):
    for element in os.listdir(rep):
        if os.path.isdir(rep+element):
            parcours_rep(rep+element+"/",number+1)
        if sys.argv[1]=="1":
            new_name=element
        elif sys.argv[1]=="2":
            if "." in element:
                new_name=base64.b64encode(".".join(element.split('.')[0:-1]).encode()).decode()+"."+element.split('.')[-1]
            else:
                new_name=base64.b64encode(element.encode()).decode()
            os.rename(rep+element,rep+new_name)
        elif sys.argv[1]=="3":
            if "." in element:
                new_name=base64.b64decode(".".join(element.split('.')[0:-1]).encode()).decode()+"."+element.split('.')[-1]
            else:
                new_name=base64.b64decode(element.encode()).decode()
            os.rename(rep+element,rep+new_name)
        print(("\t"*number)+element+"\t"+"deviens : "+new_name)

           

if len(sys.argv)>1:
    if sys.argv[1] in ["1","2","3"]:
        parcours_rep(os.getcwd()+"/transfert/",0)
    else:
        print("Paramètre incorrect")
else:
    print("Lancer ce script avec un paramètre")
    print("1 pour juste liste l'arborescence")
    print("2 pour encoder les noms des fichiers/répertoires")
    print("3 pour les décoder")