# -*- coding: utf-8 -*- # @author: Peter Lamut import argparse import os import shutil N = 1000 # the number of files in seach subfolder folder def move_files(abs_dirname): """Move files into subdirectories.""" files = sorted([os.path.join(abs_dirname, f) for f in os.listdir(abs_dirname)]) i = 0 curr_subdir = None for f in files: # create new subdir if necessary if i % N == 0: subdir_name = os.path.join(abs_dirname, '{0:02d}'.format(i // N + 1)) os.mkdir(subdir_name) curr_subdir = subdir_name # move file to current dir f_base = os.path.basename(f) shutil.move(f, os.path.join(subdir_name, f_base)) i += 1 def parse_args(): """Parse command line arguments passed to script invocation.""" parser = argparse.ArgumentParser( description='Split files into multiple subfolders.') parser.add_argument('src_dir', help='source directory') return parser.parse_args() def main(): """Module's main entry point (zopectl.command).""" args = parse_args() src_dir = args.src_dir if not os.path.exists(src_dir): raise Exception('Directory does not exist ({0}).'.format(src_dir)) move_files(os.path.abspath(src_dir)) if __name__ == '__main__': main()