[Python-de] Problem mit __file__: gibt unterschiedliche Ergebnisse zurück

Bernhard Herzog bh at intevation.de
Wed Sep 12 17:26:39 EDT 2001


"Christoph Herzog" <CCF.Herzog at gmx.net> writes:

> Hallo an alle,
> ich habe (wieder) ein Python-Problem, mit dem ich 
> nicht weiterkomme (Windows2000, Python2.1) und um Hilfe bitte:
> Ich will mit __file__ den Pfad rauskriegen, in dem eine bestimmte 
> Pythondatei steht.
> 
> Und zwar habe ich zwei Dateien
> C:\mytest.py
> C:\mytestA.py
> 
> mytest.py ist:
> #----------------
> import os
> import mytestA
> print "cwd: ", os.getcwd()
> print "mytestA.__file__: ", mytestA.__file__
> #----------
> 
> Und die zweite mytestA.py, sie dient nur als 
> eine Art Dummy:
> 
> #----------
> print "hello"
> #----------
> 
> Nun bekomme ich je nachdem, WIE ich die Datei 
> mytest.py aufrufe, ein anderes Ergebnsis; nämlich 
> so:
> 
> C:\>mytest.py
> 
> Dann bekomme ich:
> 
> Hallo
> cwd:  C:\
> mytestA.__file__:  C:\mytestA.py
> 
> 
> Wenn ich mytest.py aber so aufrufe:
> 
> C:\>C:\programme\python21\python mytest.py
> 
> dann bekomme ich:
> 
> Hallo
> cwd:  C:\
> mytestA.__file__:  mytestA.pyc

Geht es darum, daß Du einmal einen absoluten Dateinamen bekommst und ein
andermal einen relativen? Warum ist das ein Problem? 

Wenn Du unbedingt einen absoluten Dateinamen haben möchtest, kannst Du
ja einfach os.path.join(os.getcwd(), module.__file__) verwenden. 

Ggf getcwd() gleich am Anfang des Programms aufrufen und den Wert
irgendwo speichern, falls Dein Programm iregendwo os.chdir() aufruft

> Vermutlich habe ich etwas übersehen, aber ich 
> komme nicht drauf. Ich hatte diese Frage vor ein 
> paar Tagen schon einmal nach comp.lang.python 
> gepostet, und dort auch eine Antwort bekommen, 
> aber die ist offensichtlich nicht richtig, nämlich 
> daß es davon abhängt, ob die Datei mytest.pyc 
> schon existiert oder nicht und nicht von der Art 
> des Aufrufs. Dem ist aber nicht so.

Der Unterschied in der Endung kommt aber schon daher. Es würde helfen,
wenn Du genauer erklärt hättest, was den eigentlich das Problem ist. Die
Ausgaben des Programms scheinen nämlich das zu sein was man erwarten
würde.

   Bernhard

-- 
Intevation GmbH                                 http://intevation.de/
Sketch                                 http://sketch.sourceforge.net/
MapIt!                                               http://mapit.de/



More information about the Python-de mailing list