J'ai un ensemble de dossiers (appelés * .pages), que je veux compresser dans leurs fichiers .zip individuels, par exemple. "example1.pages" dans "example1.pages.zip", "example2.pages" dans "example2.pages.zip", etc. Je souhaite également inclure le contenu des dossiers individuels .pages.Comment compresser de manière récursive plusieurs dossiers en tant que fichiers .zip individuels?
Actuellement, le script zippe tous les fichiers .pages dans un seul fichier avec des répertoires imbriqués.
Je ne sais pas comment procéder, et je crois qu'il me manque quelque chose lors de l'exécution des fonctions zipfile.
Toute aide sera très appréciée!
import os
import zipfile
start_path = "MY/DIRECTORY/HERE"
def zipdir(ziph):
dir_count = 0
file_count = 0
for (path,dirs,files) in os.walk(start_path):
print('Directory: {:s}'.format(path))
dir_count += 1
for file in dirs:
if file.endswith(".pages"):
print('\nAttempting to zip: \'{}\''.format(file))
ziph.write(os.path.join(path, file))
print('Done')
file_count += 1
print('\nProcessed {} files in {} directories.'.format(file_count,dir_count))
if __name__ == '__main__':
zipf = zipfile.ZipFile("NAME/OF/INDIVIDUAL/ZIP/FILE.zip", 'w', zipfile.ZIP_DEFLATED)
zipdir(zipf)
zipf.close()
Si vous souhaitez opérer sur des fichiers, pourquoi relancez-vous les répertoires? – pvg
Si vous voulez plusieurs fichiers zip ... alors créez-les dans la boucle. – tdelaney
@pvg Je souhaite utiliser des dossiers portant le nom ".pages" – WhoTheDevil