wip rewrite
This commit is contained in:
@@ -205,7 +205,7 @@ xmlString = ET.tostring(data, encoding="utf-8", xml_declaration=True)
|
|||||||
|
|
||||||
# -------------------------------- Format xml -------------------------------- #
|
# -------------------------------- Format xml -------------------------------- #
|
||||||
|
|
||||||
formatter = xmlformatter.Formatter(indent="2", indent_char=" ")
|
formatter = xmlformatter.Formatter(indent=2, indent_char=" ")
|
||||||
formattedXml = formatter.format_string(xmlString)
|
formattedXml = formatter.format_string(xmlString)
|
||||||
|
|
||||||
# print(formattedXml)
|
# print(formattedXml)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import argparse
|
|||||||
from importlib.metadata import metadata
|
from importlib.metadata import metadata
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import csv
|
import csv
|
||||||
|
import datetime
|
||||||
|
|
||||||
REQUIRED_CSV_COLUMNS = ['Notes', 'Meter n°', 'Reading', 'Reading data']
|
REQUIRED_CSV_COLUMNS = ['Notes', 'Meter n°', 'Reading', 'Reading data']
|
||||||
|
|
||||||
@@ -11,6 +12,7 @@ REQUIRED_CSV_COLUMNS = ['Notes', 'Meter n°', 'Reading', 'Reading data']
|
|||||||
METADATA = metadata("BudaportaFvmConvert")
|
METADATA = metadata("BudaportaFvmConvert")
|
||||||
__version__ = METADATA["Version"]
|
__version__ = METADATA["Version"]
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
prog=METADATA["Name"],
|
prog=METADATA["Name"],
|
||||||
@@ -23,26 +25,26 @@ def run():
|
|||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument("source",
|
parser.add_argument("source",
|
||||||
type=Path,
|
type=Path,
|
||||||
help="Path to a csv file or a folder",
|
help="Path to a csv file or a folder",
|
||||||
nargs="+"
|
nargs="+"
|
||||||
)
|
)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
csvpaths = []
|
csvpaths = []
|
||||||
|
readings = []
|
||||||
|
|
||||||
for path in args.source:
|
for path in args.source:
|
||||||
if path.is_dir():
|
if path.is_dir():
|
||||||
csvpaths.extend(get_csv_paths(path))
|
csvpaths.extend(get_csv_paths(path))
|
||||||
elif path.suffix == ".csv":
|
elif path.suffix == ".csv":
|
||||||
csvpaths.append(path)
|
csvpaths.append(path)
|
||||||
|
|
||||||
for csvpath in csvpaths:
|
for csvpath in csvpaths:
|
||||||
CsvFile(csvpath)
|
readings.extend(CsvFile(csvpath).get_readings())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_csv_paths(dp: Path):
|
def get_csv_paths(dp: Path):
|
||||||
paths = []
|
paths = []
|
||||||
if dp.is_dir():
|
if dp.is_dir():
|
||||||
@@ -54,12 +56,42 @@ def get_csv_paths(dp: Path):
|
|||||||
|
|
||||||
class CsvFile:
|
class CsvFile:
|
||||||
def __init__(self, filepath: Path) -> None:
|
def __init__(self, filepath: Path) -> None:
|
||||||
with open(filepath, newline='') as csvfile:
|
self.header_numbers = {}
|
||||||
incsv = csv.reader(csvfile, delimiter=';')
|
self.readings = []
|
||||||
# csvArrs.append([])
|
with open(filepath, newline='', encoding="cp1252") as csvfile:
|
||||||
# for row in incsv:
|
incsv = list(csv.reader(csvfile, delimiter=';'))
|
||||||
# csvArrs[0].append(row)
|
header_row = incsv.pop(0)
|
||||||
|
for i, col_name in enumerate(header_row):
|
||||||
|
if col_name in REQUIRED_CSV_COLUMNS:
|
||||||
|
self.header_numbers[col_name] = i
|
||||||
|
for csv_row in incsv:
|
||||||
|
self.readings.append(Reading(csv_row, self.header_numbers))
|
||||||
|
|
||||||
class CsvRow:
|
def get_readings(self) -> list["Reading"]:
|
||||||
def __init__(self, ) -> None:
|
return self.readings
|
||||||
pass
|
|
||||||
|
class Reading:
|
||||||
|
def __init__(self, csv_row: list, header_numbers: dict) -> None:
|
||||||
|
self.data_dict = {
|
||||||
|
"KeszulekAzon": "",
|
||||||
|
"Gyariszam": "",
|
||||||
|
"MeroAllas": "",
|
||||||
|
"MertekEgyseg": "m3",
|
||||||
|
"LeoMod": "20",
|
||||||
|
"LeoMegjegyzes": "06",
|
||||||
|
"TenyLeoDatum": "",
|
||||||
|
"TenyLeoIdo": ""
|
||||||
|
}
|
||||||
|
for col_name, col_num in header_numbers.items():
|
||||||
|
if col_name == "Notes":
|
||||||
|
self.data_dict["KeszulekAzon"] = csv_row[col_num]
|
||||||
|
elif col_name == "Meter n°":
|
||||||
|
self.data_dict["Gyariszam"] = csv_row[col_num]
|
||||||
|
elif col_name == "Reading":
|
||||||
|
self.data_dict["MeroAllas"] = csv_row[col_num]\
|
||||||
|
.replace(',', '.').replace(' ', '')
|
||||||
|
elif col_name == "Reading data":
|
||||||
|
reading_date = datetime.datetime.strptime(
|
||||||
|
csv_row[col_num], '%d. %m. %Y %H:%M:%S')
|
||||||
|
self.data_dict["TenyLeoDatum"] = reading_date.strftime('%Y%m%d')
|
||||||
|
self.data_dict["TenyLeoIdo"] = reading_date.strftime('%H%M%S')
|
||||||
|
|||||||
Reference in New Issue
Block a user