opening a file using a relative path from a subclass in a package
Heiko Wundram
modelnine at bit-bukket.org
Wed Dec 7 16:05:07 EST 2005
spike grobstein wrote:
> I'd like the packages to define a file path for supporting files
> (graphics, etc) that are stored inside the package. The problem is that
> the superclass's definition (stored elsewhere) has all of the code for
> actually opening the files, so when I use the
> os.path.dirname(os.path.abspath(__file__)) trick, it's finding the
> superclass, not the package's path.
Try:
import sys
os.path.dirname(os.path.abspath(sys.modules[self.__class__.__module__].__file__))
if you have an instance object (self) at hand, otherwise
os.path.dirname(os.path.abspath(sys.modules[selfcls.__module__].__file__))
if you have a class object (selfcls) at hand.
Thing being why your approach doesn't work is that __file__ references a
global which is always resolved in the namespace the function is defined
in, so the source file it's defined in. You can get at the module object
(the global namespace) of a class object by using the sys.modules trick.
Be aware that this is pretty... non-standard stuff, to say it mildly... ;-)
HTH!
--- Heiko.
More information about the Python-list
mailing list