forked from viswanathanTJ/python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfiles_into_folder.py
51 lines (33 loc) · 1.19 KB
/
files_into_folder.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import argparse
import os
import shutil
N = 500 # the number of files in seach subfolder folder
def move_files(abs_dirname):
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()