Seite 1 von 1

Spezielle Attribute verwenden wie im_func, im_class

Verfasst: Dienstag 27. Dezember 2005, 09:58
von Gast
Hallo zusammen!

Ich haben folgendes Problem: Ich wollte in Script einige zusätzlich Dateien aus dem gleichen Verzeichnis verwenden, aber ohne absolute Verzeichnisangabe. Wenn ich das Scirpt direkt aufrufen, gibt es kein Problem, da die anderen Dateien im gleichen Verzeichnis! Aber, wenn es aus einem Framework, dann sieht schrecklich aus:

Ich habe ad hoc so gemacht:
filename = inspect.getabsfile(eineMethodeAusEinerKlasse)
==> dann das entsprechende Verzeichnis herausfiltern und anschließend mit anderen Dateien zusammensetzen!

Zufällig habe ich gesehen, es gibt auch Attribute wie im_func, im_class, aber ich wisse nicht wie ich in meinen Code verwenden!

Bitte um Hilfe oder einen Hinweis

Boostpy

Re: Spezielle Attribute verwenden wie im_func, im_class

Verfasst: Dienstag 27. Dezember 2005, 10:19
von gerold
Anonymous hat geschrieben:Bitte um Hilfe oder einen Hinweis
Hi!

Mit "__file__" bekommst du den Dateinamen des Modules. Wenn du das noch durch "os.abspath()" und "os.dirname()" jagst, dann hast du den Ordner des Moduls. Den Rest deines Beitrages müsste ich wohl öfter durchlesen um ihn zu verstehen. :)

mfg
Gerold
:-)

Verfasst: Dienstag 27. Dezember 2005, 10:32
von Gast
Hi gerold,

mit __file__ geht es bei mir leider nicht. Es ist nur den einzigen Methoden verfügbar, da mein Framework alle Methoden gesammelt (UnittestCases) hat. Oder habe ich falsch verstanden?

mfg

Boostpy

Verfasst: Dienstag 27. Dezember 2005, 15:27
von Leonidas
Hier ein Snippet aus einem meiner Programme, das könnte dich weiterbringen:

Code: Alles auswählen

    def parser_dir(self):
        """Gets the path of the directory where the parsers can be found."""
        try:
            appdir = os.path.dirname(__file__)
            if '.zip' in appdir:
                # frozen exe
                appdir = os.path.dirname(sys.argv[0])
        except NameError:
            # frozen exe, so no __file__
            appdir = os.path.dirname(sys.argv[0])
        pdir = os.path.join(appdir, 'parsers')
        return pdir

Verfasst: Dienstag 27. Dezember 2005, 19:37
von Gast
Hi Leonidas,

danke für das Codesegment. Ich glaube, es hilft mir nicht weiter.

In den Moment, wann ich den Modulnamen brauche, wird nur der Name einer Methode noch verfügbar (sonst muss ich das Framework anpassen!). So brauche ich zu wissen, wie ich am einfachsten ermitteln kann, wo das entsprechende Modul herkommt?

Die Anweisung

Code: Alles auswählen

filename = inspect.getabsfile(eineMethodeAusEinerKlasse)
kann mir helfen, aber ich wollte wissen,

wie man im_func im_class verwenden kann?

Danke für die Hilfe!

Boostpy