Skip to content

Instantly share code, notes, and snippets.

@memoia
Created December 30, 2014 01:10
Show Gist options
  • Save memoia/1413a333bb2049f0f4a0 to your computer and use it in GitHub Desktop.
Save memoia/1413a333bb2049f0f4a0 to your computer and use it in GitHub Desktop.
Split up a bunch of files evenly into directories sized for a CD-R
#!/usr/bin/python -i
import os
MAX_SIZE = 635 * (1024 * 1024)
files = os.listdir(os.path.dirname(__file__))
sizes = map(lambda x: os.stat(x).st_size, files)
sizes_files = sorted(filter(lambda x: os.path.basename(__file__) != x[1] and
os.path.isfile(x[1]), zip(sizes, files)),
reverse=True)
buckets = [{}]
for (size, name) in sizes_files:
added = False
for bucket in buckets:
if added:
continue
if size + sum(bucket) < MAX_SIZE:
added = True
bucket[size] = name
if not added:
buckets.append({size: name})
incr = 6
for bucket in buckets:
dirname = 'dv-{}'.format(str(incr).zfill(2))
os.mkdir(dirname)
for (size, name) in bucket.items():
os.link(name, os.path.join(dirname, name))
incr += 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment