-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbondy_writer.py
89 lines (63 loc) · 2.52 KB
/
bondy_writer.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# -*- coding: utf-8 -*-
import os
import glob
import csv
class BondyWriter:
def __init__(self):
type_of_file = '.csv'
self.text = ''
inputs = self.getAllInputCSVs()
for input in inputs:
self.formatInput(input)
def getAllInputCSVs(self):
result = glob.glob('input/*.csv')
return result
def formatInput(self, input):
text_file = open(input, 'r')
points_line = text_file.readline()
points_list = points_line.split(",")
filtered_point_list = filter(None, points_list)
text_file.readline() #trash header
data_matrix = []
#We left an empty item that will convert into an empty cell on the final csv
wavelength_list = ['']
for data_line in text_file:
data_line_list = data_line.split(",")
try:
float(data_line_list[0])
except ValueError:
#It's not a float, so we will stop here the iteration as we finished reading the data results
break
wavelength_list.append(data_line_list.pop(0))
#get even index items, wich contains useful result data
data_line_list = data_line_list[::2]
#change english . notation by , spanish notation for floats
formatted_data_line_list = []
for data_item in data_line_list:
formatted_data_line_list.append(data_item.replace(".", ","))
data_matrix.append(formatted_data_line_list)
#Get the name_of_file.csv, without the path
file_name = text_file.name.split("\\")[1]
self.write_formatted_result_into_output_csv(file_name, wavelength_list, filtered_point_list, data_matrix)
#Debug
#self.print_formatted_result(wavelength_list, filtered_point_list, data_matrix)
def write_formatted_result_into_output_csv(self, file_name, wavelength_list, filtered_point_list, data_matrix):
with open('output/formatted_' + file_name, mode='wb') as csv_file:
results_csv_writer = csv.writer(csv_file, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
results_csv_writer.writerow(wavelength_list)
#transpose
line_list = []
for x in range(len(filtered_point_list) - 1):
line_list = [filtered_point_list[x]]
for data_line_list in data_matrix:
line_list.append(data_line_list[x])
results_csv_writer.writerow(line_list)
def print_formatted_result(self, wavelength_list, filtered_point_list, data_matrix):
print(self.format_list_into_commas_string(wavelength_list))
#transpose
for x in range(len(filtered_point_list) - 1):
print(filtered_point_list[x] + ';')
for data_line_list in data_matrix:
print(data_line_list[x] + ';')
def format_list_into_commas_string(self, list):
return ";".join(map(str, list))