dump Exemple de la liste d'un répertoire:Commander une liste de fichiers par taille via python
hello:3.1 GB
world:1.2 MB
foo:956.2 KB
La liste ci-dessus est dans le format de FICHIER: VALEUR UNITÉ. Comment procéder pour commander chaque ligne ci-dessus en fonction de la taille du fichier? Je pensais peut-être analyser chaque ligne pour l'unité via le modèle ": VALUE UNIT" (ou en quelque sorte utiliser le délimiteur) puis l'exécuter à travers le ConvertAll engine, recevoir la taille de chaque valeur en octets, le hacher avec le reste de la ligne (noms de fichiers), puis ordonner les paires de dictionnaire résultant par taille.
Le problème est, je n'ai aucune idée de la correspondance de modèle. Mais je vois que vous pouvez trier un dictionary
S'il ya une meilleure direction pour résoudre ce problème, s'il vous plaît faites le moi savoir.
EDIT:
La liste que j'avais était en fait dans un fichier. En m'inspirant de la réponse du (génial) Alex Martelli, j'ai écrit le code suivant qui extrait d'un fichier, le commande et l'écrit à un autre.
#!/usr/bin/env python
sourceFile = open("SOURCE_FILE_HERE", "r")
allLines = sourceFile.readlines()
sourceFile.close()
print "Reading the entire file into a list."
cleanLines = []
for line in allLines:
cleanLines.append(line.rstrip())
mult = dict(KB=2**10, MB=2**20, GB=2**30)
def getsize(aline):
fn, size = aline.split(':', 1)
value, unit = size.split(' ')
multiplier = mult[unit]
return float(value) * multiplier
print "Writing sorted list to file."
cleanLines.sort(key=getsize)
writeLines = open("WRITE_OUT_FILE_HERE",'a')
for line in cleanLines:
writeLines.write(line+"\n")
writeLines.close()
Semplicemente génie! – torger
+1 Vous êtes vraiment un grand maître Python. – helpermethod
Toujours extrêmement utile 7 ans plus tard. Je vous remercie –