-
Notifications
You must be signed in to change notification settings - Fork 0
/
copy_by_extension.py
executable file
·48 lines (43 loc) · 1.75 KB
/
copy_by_extension.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
#!/bin/env python3
import os
import re
import shutil
import sys
def copy_by_extension(from_folder, to_folder, extension, tree):
"""
copy_by_extension.py - searches a folder or folder tree and copies files with a certain extension to another
chosen folder.
:param from_folder: Path to folder which files must be copied from.
:param to_folder: Path to folder which files must be copied to.
:param extension: Extension of the files. Eg. (.txt .pdf)
:param tree: Y to search folder tree or N to search only the parent folder.
:return: List of copied files.
"""
extension_ = re.compile(r'(.*?)(%s)' %(extension))
if tree.upper() == 'Y':
for folder, sub_folder, file_name in os.walk(from_folder):
try:
for files in file_name:
if extension_.search(files):
print('Copying %s/%s' %(folder, files))
print('To %s/%s' %(to_folder, files))
shutil.copy(folder + '/' + files, to_folder)
except shutil.SameFileError:
print('Same file found: %s' % (file_name[0]))
break
elif tree.upper() == 'N'.upper():
for file in os.listdir(from_folder):
try:
if extension_.search(file):
print('Copying %s/%s' %(from_folder, file))
print('To %s/%s' %(to_folder, file))
shutil.copy(from_folder + '/' + file, to_folder)
except shutil.SameFileError:
print('Same file found: %s' % (file))
break
if len(sys.argv) < 4:
print(help(copy_by_extension))
sys.exit()
else:
arguments = sys.argv
copy_by_extension(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4])