Skip to content

Instantly share code, notes, and snippets.

@zupo
Created June 24, 2013 12:56
Show Gist options
  • Save zupo/5849843 to your computer and use it in GitHub Desktop.
Save zupo/5849843 to your computer and use it in GitHub Desktop.
Split a folder with many files into subfolders with N files. Usage: python folder_splitter.py path/to/target/folder
# -*- coding: utf-8 -*-
# @author: Peter Lamut
import argparse
import os
import shutil
N = 10 # the number of files in seach subfolder folder
def move_files(abs_dirname):
"""Move files into subdirectories."""
files = [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:03d}'.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()
@kushalsamant
Copy link

kushalsamant commented Jun 8, 2024

running 'python split.py' gave me the following error usage: split.py [-h] src_dir split.py: error: the following arguments are required: src_dir
how do i fix this? please share exact code lines to fix this. i'm new to this.

It tells u it needs the scr_dir as argument

  1. click on the RAW button at the top of this code window.
  2. copy, paste the code, and save the file as 'folder_splitter.py'

Usage:
3. Suppose
a. you want to reorganize a folder called MESSY
b. the path to MESSY is F:\MESSY

  1. copy paste 'folder_splitter.py' to F:\

  2. open command prompt

  3. in command prompt,
    a. move cursor to F:
    b. type the following code
    python folder_splitter.py F:\MESSY

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment