ich habe gestern ein kleine Tool geschrieben, mit dessen Hilfe ich eine csv-Datei einlese und sortieren kann. Das Ergebnis wird dann in verschiedene Dateien gespeichert.
Das Skript funktioniert soweit, würde mich trotzdem freuen, wenn ich euch das mal anschaut mir ein konstruktives Feedback geben würde was man besser machen kann.
main.py
Code: Alles auswählen
import argparse
from analyze_table import Table
#CSV-Datei laden und Klasse Table übergeben
class LoadFile:
def __init__(self, input_file, directory, column):
try:
# If the file does not exist,
# then it would throw an IOError
file = open(input_file, 'r')
Table(file, directory, column)
file.close()
except IOError:
# print(os.error) will <class 'OSError'>
print('Problem reading: ' + input_file)
#Bereitstellen der Eingangsparameter
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-f", "--file",
help="CSV-File to import. Example: /Users/jorge/Desktop/Liste.csv", type=str)
parser.add_argument("-d", "--directory",
help="Target-Directory for export. Example: /Users/jorge/Desktop", type=str)
parser.add_argument("-c", "--column",
help="Column to sort table", type=int)
args = parser.parse_args()
LoadFile(args.file, args.directory, args.column)
Code: Alles auswählen
import os
class Table:
def __init__(self,file,directory, column):
self.create_export_files(file, directory, column)
def create_export_files(self, file, directory, column):
print('create_export_files')
i = 0
title = ''
cache = ''
filename = ''
#Zeilenweise csv-Datei durchgehen
for line0 in file:
#Zeilenumbrüche löschen
line1 = line0.split('\n')[0]
#Spaltenüberschriften bestimmen
if i == 0:
title = line1
if i > 0:
#Cache füllen mit Sortierkriterium
if cache != line1.split(';')[column]:
cache = line1.split(';')[column]
filename = cache + '.csv'
#Datei anlegen mit Spaltenüberschrift
if not os.path.isfile(filename):
export_file = open(directory+'/'+filename, 'w')
export_file.write(title +'\n')
export_file.close()
#Datei befüllen
export_file = open(directory+'/'+filename, 'a')
export_file.write(line0)
export_file.close()
i += 1