Fehlersuche
Verfasst: Dienstag 20. Oktober 2015, 19:49
Hi, Wissende.
Ich taste mich gerade an openpyxl heran, um mit Excel zu spielen.
Dabei spielt python mit mir leider verstecken und ich kann nicht entdecken, wo ich suchen soll.
Ich habe eine Dump- Funktion geschrieben (die Python- Puristen mögen mir verzeihen, dass sie so aussieht, aber anders kann ich es nun mal nicht vernünftig lesen, wenn ich mir das in einigen Monaten mal wieder ansehen muss.)
Dies Dump- Funktion löst quasi alle iterierbaren Objekte in Unterobjekte auf und schreibt, wenn nichts mehr iterierbar ist, hin, was drin steht, vorausgesetzt, es gibt die Funktion __str__.
Das sieht im Grunde auch so aus, wie erwartet. Allerdings macht mir folgendes Kopfschmerzen.
liefert beides mal das gleiche Ergebnis
liefert beim ersten Dump auch noch, was ich erwarte. Beim zweiten Dump hingegen ist nur noch etwas vom Typ 'generator' übrig.
(zwischen beiden Dumps passiert exakt NICHTS)
Liegt es an meinem Dump oder habe ich wieder irgend etwas noch nicht verstanden?
Die Dump- Funktion sieht so aus:
Ich taste mich gerade an openpyxl heran, um mit Excel zu spielen.
Dabei spielt python mit mir leider verstecken und ich kann nicht entdecken, wo ich suchen soll.
Ich habe eine Dump- Funktion geschrieben (die Python- Puristen mögen mir verzeihen, dass sie so aussieht, aber anders kann ich es nun mal nicht vernünftig lesen, wenn ich mir das in einigen Monaten mal wieder ansehen muss.)
Dies Dump- Funktion löst quasi alle iterierbaren Objekte in Unterobjekte auf und schreibt, wenn nichts mehr iterierbar ist, hin, was drin steht, vorausgesetzt, es gibt die Funktion __str__.
Das sieht im Grunde auch so aus, wie erwartet. Allerdings macht mir folgendes Kopfschmerzen.
Code: Alles auswählen
a = [1,2,3,[4,6],6,[7,[8,9]]]
print Dump(a)
print Dump(a)Code: Alles auswählen
MyWorkBook = openpyxl.load_workbook('Test.xlsx',read_only = False)
MyWorkSheet = MyWorkBook['Tabelle1']
MyBereich = MyWorkSheet['A1:C2']
print Dump(MyBereich)
print Dump(MyBereich)(zwischen beiden Dumps passiert exakt NICHTS)
Liegt es an meinem Dump oder habe ich wieder irgend etwas noch nicht verstanden?
Die Dump- Funktion sieht so aus:
Code: Alles auswählen
def Dump(pO,pcbMax = False):
#lvso = type(po)+'\n'
def Zeile(pI,pcnLevel,pcsIndent):
if '__iter__' in dir(pI):
if pcbMax:
lvsI = 'a)%s%02d: %s\n' % (pcsIndent, pcnLevel, str(type(pI)))
else:
lvsI = '%s%s\n' % (pcsIndent, str(type(pI)))
for pX in pI:
lvsI += Zeile(pX,pcnLevel+1,pcsIndent+'\t')
else:
if 'value' in dir(pI):
lvsValue = str(pI.value)
else:
lvsValue = ''
if '__str__' in dir(pI):
if pcbMax:
lvsI = 'b)%s%02d: %s [%s]\n' % (pcsIndent, pcnLevel, str(pI), lvsValue)
else:
lvsI = '%s%s [%s]\n' % (pcsIndent, str(pI), lvsValue)
else:
if pcbMax:
lvsI = 'c)%s%02d: k.A. [%s]\n' % (pcsIndent, pcnLevel, lvsValue)
else:
lvsI = '%sk.A. [%s]\n' % (pcsIndent, lvsValue)
return lvsI
lvsO = Zeile(pO,0,'')
return lvsO