-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathread_in_tree_structure.py
More file actions
112 lines (87 loc) · 4.25 KB
/
read_in_tree_structure.py
File metadata and controls
112 lines (87 loc) · 4.25 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import read_csv_file
import update_csv_file
import shutil
def get_equipment_tree(file_name, loc_tagname, loc_cluster, max_count, map_schema, data_base, mode):
search_digit = 2 # read in csv and make flat equip list with no equipment
data_base, _ = read_csv_file.move_scenario_data_to_array(search_digit, file_name, loc_tagname,
loc_cluster, max_count, map_schema, data_base, mode)
return data_base
def read_first_line(file_name):
with open(file_name, mode='rt', encoding='utf-8') as f:
return f.readline().strip().lower().rsplit(',')
def get_file_list():
equipmnt_file_name = 'equip.csv'
variables_file_name = 'variable.csv'
trends_file_name = 'trend.csv'
spc_file_name = 'spc.csv'
accums_file_name = 'accums.csv'
advalm_file_name = 'advalm.csv'
anaalm_file_name = 'anaalm.csv'
argdig_file_name = 'argdig.csv'
digalm_file_name = 'digalm.csv'
hresalm_file_name = 'hresalm.csv'
tsana_file_name = 'tsana.csv'
tsdig_file_name = 'tsdig.csv'
return [equipmnt_file_name, variables_file_name, trends_file_name, spc_file_name, accums_file_name,
advalm_file_name, anaalm_file_name, argdig_file_name, digalm_file_name,
hresalm_file_name, tsana_file_name, tsdig_file_name]
def get_file_paths(file_path):
file_list = list()
files = get_file_list()
for file in files:
file_list.append(file_path + '\\' + file)
return file_list
def get_loc_of_header_columns(file_name):
header = read_first_line(file_name)
loc_item = -1
loc_tagname = -1
loc_iodev = -1 # only applicable to variable csv and equip csv
if file_name.find('equip.csv') >= 0:
loc_equip = header.index('name')
loc_iodev = header.index('i/o device')
else:
loc_equip = header.index('equipment')
loc_item = header.index('item name')
if file_name.find('variable.csv') >= 0:
loc_tagname = header.index('tag name')
loc_iodev = header.index('i/o device')
elif file_name.find('trend.csv') >= 0:
loc_tagname = header.index('tag name')
elif file_name.find('spc.csv') >= 0:
loc_tagname = header.index('spc tag name')
elif file_name.find('accums.csv') >= 0:
loc_tagname = header.index('name')
else:
loc_tagname = header.index('alarm tag')
loc_cluster = header.index('cluster name')
loc_project_name = header.index('project')
return loc_equip, loc_item, loc_tagname, loc_cluster, loc_iodev, loc_project_name
def update_tag_csvs(map_schema, area_map, file_path, equipment_map_dict, equipment_type_map_dict,
item_type_map_dict, area_prefix_map_dict):
file_list = get_file_paths(file_path)
equip_list = dict()
for file_name in file_list:
if not file_name.find('equip.csv') >= 0: # skip equipment file
loc_equip, loc_item, loc_tagname, loc_cluster, loc_iodev, loc_project_name = \
get_loc_of_header_columns(file_name)
equip_list = update_csv_file.update_csv(map_schema, area_map, loc_equip, loc_item, loc_tagname,
loc_cluster, loc_iodev, loc_project_name, file_name,
equip_list, equipment_map_dict, equipment_type_map_dict,
item_type_map_dict, area_prefix_map_dict)
return equip_list
def update_equipment_csv(file_path, equip_list):
file_list = get_file_paths(file_path)
for file_name in file_list:
if file_name.find('equip.csv') >= 0:
loc_equip, _, _, loc_cluster, loc_iodev, loc_project_name = get_loc_of_header_columns(file_name)
update_csv_file.update_equipment_csv(
loc_equip, loc_cluster, loc_iodev, loc_project_name, file_name, equip_list)
def replace_original_csv(file_path):
file_list = get_file_paths(file_path)
for file_name in file_list:
scratch_file = file_name.replace('.csv', '-working.csv')
backup_file = file_name.replace('.csv', '.bak')
# copy .csv to .bak
shutil.move(file_name, backup_file)
# copy scratch file to .csv
shutil.move(scratch_file, file_name)