2011-02-25 55 views
0

我已经编写了一个使用py2exe编译为exe的小型Windows服务,该服务从我读取文件。它工作得很好 - 但是 - 我只能使用绝对路径来访问文件,使用相对路径不起作用。在.NET中,你可以这样做:Python中的Windows服务相对路径问题

System.Reflection.Assembly.GetEntryAssembly().Location 

为了获取路径.exe文件,是否有与此类似,但Python的一个选择吗?

最好的问候,

安德斯

回答

1

你有几个选项。如果你已经有一个模块对象,你可以做<module>.__file__得到的路径:

>>> import time 
>>> time.__file__ 
'/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/time.so' 

然而,很多时候,你想知道你的当前模块的位置,在这种情况下,你可以使用:

import inspect 

path = inspect.currentframe().f_code.co_filename 

(也请记住,这可以是任何可以通过Python加载的东西 - 因此它可以是.pyd,.pyc,.so,.dll等)

+0

工作得非常好,谢谢。 – Anders 2011-02-25 12:57:40

+0

@Anders:哪一个工作? – martineau 2011-02-25 13:29:57

+0

@martineau,我试过第二个,它工作正常。 – Anders 2011-02-25 13:32:36