Je crée un logiciel Python qui comprime les fichiers / dossiers ... Comment créerai une section du code qui demande l'entrée de l'utilisateur de l'emplacement du dossier, puis la compresse. J'ai actuellement le code pour un seul fichier mais pas un dossier rempli de fichiers. S'il vous plaît expliquer en détail comment faire cela. P>
4 Réponses :
gzip ne fait pas compression des dossiers / répertoires, uniquement des fichiers uniques. Utilisez le zipfile code>
module à la place. P>
Comme Larsmans dit, la compression GZIP n'est pas utilisée pour les répertoires, uniquement des fichiers uniques. La façon habituelle de faire des choses avec Linux est de mettre d'abord le répertoire dans une citagie, puis de le comprimer. P>
Il convient de mentionner que vous pouvez obtenir une meilleure compression lorsque vous goudrez, puis compressez que si vous deviez compresser chaque fichier individuellement.
Je ne fais pas ui, vous êtes donc seul pour obtenir le nom du dossier de l'utilisateur. Voici un moyen de faire une tarfil comprimé GZ. Il ne les pas em> recueille sur les sous-dossiers, vous aurez besoin de quelque chose comme Os.walk () pour cela.
En fait, vous pouvez simplement écrire tar.add (folder_path) code> et il sera ajouté de manière récursive. (Bien sûr, cela pourrait être une nouvelle fonctionnalité ajoutée au cours des cinq années que cette réponse a été postée!) De plus, la boucle pour ne devrait pas être indentée ici, à moins que vous ne changiez
tar = tarfile.open (...) code> à
avec tarfile.open (...) comme goudron: code> (qui est une bonne idée, puis vous pouvez vous débarrasser de la goudron
() code > ligne).
Merci, je ne sais pas comment cette erreur d'indentation a survécu pendant 5 ans.
Vous n'avez pas besoin d'avoir taud.add (OS.Path.Join (folder_path, nom)) code>?
Le code pour compresser un dossier dans le fichier tar est le suivant:
import tarfile tar = tarfile.open("TarName.tar.gz", "w:gz") tar.add("folder/location", arcname="TarName") tar.close()
Gzip n'est-il pas censé faire une compression, pas l'archivage? Ne devriez-vous pas être peut-être envisagé de regarder le goudron au lieu de cela?