-
Notifications
You must be signed in to change notification settings - Fork 0
/
Extract.py
69 lines (57 loc) · 2.59 KB
/
Extract.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Importing Moduels
import pandas as pd
from pathlib import Path
import os,shutil,sys,argparse
def main():
# Setting variables.
shtname = 'List'
move_dir = 'Output'
# Setting arguments
parser = argparse.ArgumentParser(description="""File Extractor based on workbook list
Create Excel file with name 'List' and two columns 'Name' and 'Number' """,
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("-p", "--path", help="Folder that contins the files")
parser.add_argument("-ext", "--extention",
help="Folder that contins the files")
parser.add_argument("-xl", "--excel", help="Folder that contins the files")
parser.add_argument("--ignore-existing",
action="store_true", help="skip files that exist")
args = parser.parse_args(args=None if sys.argv[1:] else ['--help'])
fldr_dir = args.path # directory of the files.
extract(args, fldr_dir, shtname, move_dir)
def extract(args, fldr_dir, shtname, move_dir):
# list all accounts Python: Select Linter
df = pd.read_excel(args.excel, shtname)
# loop through folders and sub folders
i = 0
for index, row in df.iterrows():
Name = row["Name"]
Num = row["Number"]
try:
try:
# Searching for the file by number
filepath = max(Path(fldr_dir).rglob(
'*' + Num + '*.' + args.extention), key=os.path.getmtime)
# todo:Validating if the file already exists in the same folder
# Creating folder in same script folder if it's not exists.
os.makedirs(move_dir, exist_ok=True)
# Copy file to path
shutil.copy(filepath, move_dir)
print('File Found ' + Num, "|", Name)
i += 1
except:
# Searching for the file by name
filepath = max(Path(fldr_dir).rglob(
'*' + Name + '*.' + args.extention), key=os.path.getmtime)
# todo:Validating if the file already exists in the same folder
# Creating folder in same script folder if it's not exists.
os.makedirs(move_dir, exist_ok=True)
# Copy file to path
shutil.copy(filepath, move_dir)
print('File copied' + Num, "|", Name)
i += 1
except:
print('file not found ' + Num, "|", Name)
print("Total found files " + str(i))
if __name__ == "__main__":
main()