Seite 1 von 1

print Anzeigetext extrahieren (Package Hierarchie)

Verfasst: Dienstag 23. September 2014, 21:00
von h1vltg3
Hallo zusammen,

hat vielleicht jemand eine Idee, wie man den Text, den ein print-Befehl erzeugt weiter verwenden kann ?

z.B.

print A
>>> <class 'ZCML.TOP.SUB.foo_mod.A'>

daraus bräuchte ich den Text: ZCML.TOP.SUB.foo_mod.A extrahiert, in eine Variable gespeichert.

Im Grunde will ich einfach nur die Package Hierarchie von der Klasse A abfragen, habe aber leider noch keine brauchbare Lösung gefunden, die mir genau diesen Text "ZCML.TOP.SUB.foo_mod.A " anzeigt. Den String zu extrahieren ist vielleicht nicht die eleganteste Lösung .. würde mir aber erstmal reichen.

Danke für eure Hilfe !

Re: print Anzeigetext extrahieren (Package Hierarchie)

Verfasst: Dienstag 23. September 2014, 21:20
von BlackJack
@h1vltg3: Die elegante Variante wäre wohl eher die Attribute `__name__` und `__module__` von `A` zu verwenden.

Edit:

Code: Alles auswählen

In [21]: print Element
<class 'xml.etree.ElementTree.Element'>

In [22]: print '{0.__module__}.{0.__name__}'.format(Element)
xml.etree.ElementTree.Element

Re: print Anzeigetext extrahieren (Package Hierarchie)

Verfasst: Dienstag 23. September 2014, 21:43
von h1vltg3
Vielen Dank, scheint zu funktionieren!

Könntest du mir den Code noch etwas weiter erläutern, bzw. auf was dieser Befehl beruht ?
Diverse Logger benutzen den selben Befehl, aber so ganz klar wie das funktioniert ist mir nicht :-)

Re: print Anzeigetext extrahieren (Package Hierarchie)

Verfasst: Dienstag 23. September 2014, 22:31
von cofi
Auf nichts besonderem:

Code: Alles auswählen

In [1]: from xml.etree.ElementTree import Element

In [2]: "%s.%s" % (Element.__module__, Element.__name__)
Out[2]: 'xml.etree.ElementTree.Element'
`str.format` laesst eben Attributszugriffe in den Formatstrings zu, mehr unter https://docs.python.org/2/library/strin ... matstrings