2011-09-03 183 views
7

我正在寻找一个解决方案,但还没有找到我所需要的。Python:脚本目录

脚本路径:/dir/to/script/script.pyC:\目录\ script.py

的例外结果:

$ ./script.py 
output: /dir/to/script 
$ cd .. && ./script/script.py 
output: /dir/to/script 

是否有任何操作系统功能模块什么的?


我是混合性的解决方案,并写:

print os.path.abspath(os.path.dirname(__file__)) 

但它是丑陋的。有更好的方法吗?

回答

15

os.path.realpath会给你的结果:

os.path.dirname(os.path.realpath(__file__)) 
+0

要求脚本目录名称的问题。所有的实际路径是消除符号链接,然后返回'os.path.abspath' – wim

+0

@wim好的修复,谢谢指出 –

+2

它仍然是脆弱的,并假设某些事情关于cwd和脚本从哪里执行。例如,在脚本中将'os.chdir('/ tmp')'放在上面的行中,并且此解决方案可能会中断。 – wim