poste hier mal das komplette Konstrukt, wie ich es jetzt einsetze.
Code: Alles auswählen
table_list = []
erg_list = []
verg_dict = {}
def get_num(filename):
with open(filename, 'r') as infile:
reader = csv.reader(infile, delimiter="\t")
for line in reader:
if line[0] != '---' and line[2] != '---':
table_list.append(line)
y = 1
while True:
table = tuple(table_list)
try:
biggest = max(filter(lambda x: int(x[0]) == y, table))
erg_list.append(biggest)
y = y + 1
except ValueError:
break
for items in erg_list:
if items[0] != '---':
verg_dict[items[0]] = items[2]
get_num(subgroupindex_path)
gruppenzaehler_dict = {}
daten_list = []
try:
with codecs.open(subgroupindex_path, "r") as ziel_file:
reader = csv.reader(ziel_file, delimiter="\t")
for line in reader:
try:
gruppenzaehler_dict[line[0], line[1]] = line[2]
a = (line[0], line[1], line[2])
daten_list.append(a)
except IndexError:
pass
except IOError:
pass
daten_list = sorted(set(daten_list))
zeile_list = []
x = 0
p = 1
for line in daten_list:
if verg_dict != {}:
w = verg_dict.get(line[0], line[2])
else:
w = ''
if w == '' and line[0] != '---' and line[2] == '---':
if line[0] in str(x):
p = p + 1
zeile = (line[0], line[1], p)
zeile_list.append(zeile)
else:
p = 1
zeile = (line[0], line[1], p)
zeile_list.append(zeile)
x = x + 1
else:
zeile = (line[0], line[1], line[2])
zeile_list.append(zeile)
zeile_list = sorted(set(zeile_list))
with open(subgroupindex_path, "w") as ziel_file:
writer = csv.writer(ziel_file, delimiter="\t")
writer.writerows(zeile_list)
daten_list = zeile_list
del zeile_list
zeile_list = []
if verg_dict != {}:
for line in daten_list:
if line[0] != '---' and line[2] == '---':
p = verg_dict.get(line[0], line[2])
p = int(p) + 1
zeile = (line[0], line[1], p)
zeile_list.append(zeile)
get_num(subgroupindex_path)
else:
zeile = (line[0], line[1], line[2])
zeile_list.append(zeile)
zeile_list = sorted(set(zeile_list))
try:
if zeile_list[0] != '':
with open(subgroupindex_path, "w") as ziel_file:
writer = csv.writer(ziel_file, delimiter="\t")
writer.writerows(zeile_list)
except IndexError:
pass
Hyperion, dachte mir das schon ...
Das Konstrukt, habe ich in eine Funktion verpackt, bistimmt geht es auch kürzer, aber für mich übersichtlicher und noch besser erkennbar.
Das mit den Namenszusätzen, wie name_list oder name_dict, ist für mich noch wichtig, um dies besser erkennen zu können.
Oder kann es da Probleme geben?
bords0, werde dies mal testen!
Das ganze Konstrukt, hat folgende Abläufe sicher zu stellen:
Code: Alles auswählen
- existiert die Datei subgroupindex_path nicht
- anlegen und befüllen der Datei
- Gruppierung nach Spalte 1 (Hauptgruppen, 1 - 20)
- fortlaufender Zähler in Spalte 3 (Untergruppenindex) anlegen
- Ist der Hauptgruppe kein Wert zugeordnet, erhält dieser auch kein Untergruppenindex
- existiert die Datei subgroupindex_path
- überprüfen neuer Daten
- Gruppierung nach Spalte 1 (Hauptgruppen, 1 - 20)
- fortlaufender Zähler in Spalte 3 (Untergruppenindex) anlegen
- Ist der Hauptgruppe kein Wert zugeordnet, erhält dieser auch kein Untergruppenindex
- werden nachträglich der Hauptgruppe einen Wert zugewiesen
- Zuweisung Zähler fürUntergruppenindex
- nicht mehr existierende Daten
- werden aus Datei gelöscht
- gelöschter Index wird nicht mehr in der betreffenden Hauptgruppe vergeben