Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

noms de fichiers trop longs

2 réponses
Avatar
Pierre Ferry
voici un script (Python 2.3.4 sous Windows) que j'ai écrit pour calculer la
taille des sous-répertoires d'un ou plusieurs répertoires donnés (sous
Windows 2000 Server) et les afficher par ordre décroissant de taille dans un
fichier de log.
Il peut malheureusement lancer une exception en se plaignant de la longueur
excessive du path de certains fichiers.
Comment faire pour contourner ce problème ?

# -*- coding: utf-8 -*-
import sys,os,codecs

def tailles(*repertoires):
try:

fichierlog=codecs.open(os.path.join(repertoires[0],'tailles.log'),"w",'latin
1')
except Exception,E:
print str(E)
else:
lresultats,lrepertoires,numrepertoire=[],[],-1
for chemin in repertoires:
lrepertoires.append(os.path.split(chemin)[1])
numrepertoire+=1
for rep in os.listdir(chemin):
if os.path.isdir(os.path.join(chemin,rep)):
print unicode(rep,'latin1')
total,nbfichiers,nbrepertoires=0L,0L,-1L
for root,dirs,filenames in
os.walk(os.path.join(chemin,rep),topdown=False):
nbfichiers +=len(filenames)
nbrepertoires +=1
total += sum(map(lambda
f:os.stat(os.path.join(root,f)).st_size,filenames))

lresultats.append((numrepertoire,rep,total,nbfichiers,nbrepertoires))
tmplist = [(x[2], x) for x in lresultats]
tmplist.sort()
lresultats = [x for (key, x) in tmplist]
lresultats.reverse()
for res in lresultats:

fichierlog.write(unicode(lrepertoires[res[0]]+'\\'+res[1]+':\n','latin1'))
fichierlog.write(unicode('\t%.3f
Mo\n'%(res[2]/1048576.0,),'latin1'))
fichierlog.write(unicode('\t'+str(res[3])+'
fichier(s)\n','latin1'))
fichierlog.write(unicode('\t'+str(res[4])+'
répertoire(s)\n','latin1'))
fichierlog.write('-'*40+'\n')
fichierlog.close()

if __name__=='__main__':
if len(sys.argv)<2:
print unicode('Passer en paramètre(s) un ou plusieurs répertoires à
analyser.','latin1')
print unicode('Un fichier "tailles.log" sera généré dans le premier
répertoire passé','latin1')
else:
tailles(*sys.argv[1:])

2 réponses

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

Je n'ai pas regarder ton script. Mais j'ai juste fait un essai ; et j'ai
constaté qu'il ignorait les noms de sous-répertoires en unicode.
Du coup, je ne suis pas allé plus loin, car je me demande s'il n'y a que la
longueur des répertoires qui provoquent des exceptions.

@+
--
MCI
Avatar
Pierre Ferry
"Michel Claveau - abstraction méta-galactique non triviale en fuite
perpétuelle." a écrit
dans le message de news:4172ed51$0$7226$
Bonsoir !

Je n'ai pas regarder ton script. Mais j'ai juste fait un essai ; et j'ai
constaté qu'il ignorait les noms de sous-répertoires en unicode.
Du coup, je ne suis pas allé plus loin, car je me demande s'il n'y a que
la

longueur des répertoires qui provoquent des exceptions.

@+
--
MCI


C'est déjà une info !
Merci.