Skip to content

Instantly share code, notes, and snippets.

@andreztz
Created August 13, 2016 06:33
Show Gist options
  • Save andreztz/6361f3828db7740ea6d175ee60bb966e to your computer and use it in GitHub Desktop.
Save andreztz/6361f3828db7740ea6d175ee60bb966e to your computer and use it in GitHub Desktop.
#! python3
# backupToZip.py
# Copies an entire folder and its contents into
# a zip file whose filename increments.
import zipfile, os
def backupToZip(folder):
# Backup the entire contents of "folder" into a zip file.
folder = os.path.abspath(folder) # make sure folder is absolute
# Figure out the filename this code should used based on
# what files already exist.
number = 1
while True:
zipFilename = os.path.basename(folder) + '_' + str(number) + '.zip'
if not os.path.exists(zipFilename):
break
number = number + 1
# Create the zip file.
print('Creating %s...' % (zipFilename))
backupZip = zipfile.ZipFile(zipFilename, 'w')
# Walk the entire folder tree and compress the files in each folder.
for foldername, subfolders, filenames in os.walk(folder):
print('Adding files in %s...' % (foldername))
# Add the current folder to the ZIP file.
backupZip.write(foldername)
# Add all the files in this folder to the ZIP file.
for filename in filenames:
if filename.startswith(os.path.basename(folder) + '_') and filename.endswith('.zip'):
continue # don't backup the backup ZIP files
backupZip.write(os.path.join(foldername, filename))
backupZip.close()
print('Done.')
backupToZip('C:\\delicious')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment