我一直在努力学习python-unipath并且已经掌握了基本的命令.但是,我被这个问题困扰了.所以,我想得到当前文件的祖先(2).所以,在python解释器上,我做了这样的事情:
Python 2.7.3 (default, Jan 2 2013, 13:56:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from unipath import Path
>>> ORM_ROOT = Path("/home/foo/lump/foobar/turf/orm/unipath_try.py").ancestor(2)
>>> ORM_ROOT
Path('/home/foo/lump/foobar/turf')
Run Code Online (Sandbox Code Playgroud)
..这是正确的,正是我想要的.现在,我将它包装在一个文件中,如下所示:
# -*- coding: utf-8 -*-
# unipath_try.py
from unipath import Path
ORM_ROOT = Path(__file__).ancestor(2)
print ORM_ROOT
Run Code Online (Sandbox Code Playgroud)
当我运行这个使用时,python unipath_try.py我没有输出!没有导入错误.我完全不知道为什么会这样 - 可能是非常愚蠢的事情.将不胜感激任何帮助/方向:(
用os.path.abspath(__file__)而不是__file__.
这是因为__file__在您的情况下包含相对路径.
__file__ 可以包含不同情况下的相对路径或绝对路径:
所以,如果你不在包含模块的sys.path部分内,你将获得一个绝对路径.如果您位于包含模块的sys.path部分内,您将获得相对路径.
如果在当前目录中加载模块,并且当前目录不在sys.path中,则将获得绝对路径.
如果在当前目录中加载模块,并且当前目录在sys.path中,则会获得相对路径.
| 归档时间: |
|
| 查看次数: |
1726 次 |
| 最近记录: |