python unipath:当前文件目录(祖先)的路径不输出任何内容
我一直在努力学习并掌握基本的命令。然而,我被这个问题难住了。因此,我想获得当前文件的祖先(2)。因此,在python解释器上,我执行如下操作:python unipath:当前文件目录(祖先)的路径不输出任何内容,python,python-2.7,Python,Python 2.7,我一直在努力学习并掌握基本的命令。然而,我被这个问题难住了。因此,我想获得当前文件的祖先(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
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')
…这是正确的,也正是我想要的。
现在,我将其包装在一个文件中,如下所示:
# -*- coding: utf-8 -*-
# unipath_try.py
from unipath import Path
ORM_ROOT = Path(__file__).ancestor(2)
print ORM_ROOT
当我使用python unipath\u try.py运行这个程序时,我没有得到任何输出!也没有导入错误。
我完全搞不懂为什么会这样——可能是很愚蠢的事情。
如果您在这方面有任何帮助/指导,我们将不胜感激:(使用os.path.abspath(\uuuu文件\uuuu)
而不是\uu文件
)
这是因为在您的案例中,\uuuuuuu文件
包含一个相对路径
\uuuu文件\uuuu
在不同情况下可以包含相对路径或绝对路径:
因此,如果您不在sys.path中包含
模块,您将获得一个绝对路径。如果您位于
包含模块的sys.path,您将获得一个相对路径
如果在当前目录中加载模块,则当前
目录不在sys.path中,您将获得一个绝对路径
如果在当前目录中加载模块,则当前
目录位于sys.path中,您将获得一个相对路径
(引用自)如果在文件所在的目录中运行脚本,\uuuuuu file\uuuu
为filename.py
>>> Path('a.py')
Path(u'a.py')
>>> Path('a.py').ancestor(2)
Path(u'')
使用以下命令传递绝对路径:
备选方案
您还可以使用absolute()
方法
Path('t.py').absolute().ancestor(2)
非常感谢你的回答——事实上你是对的。不过我会根据时间接受alecxe的回答:)@JohnJ,没关系。还有其他选择。:)非常感谢您的解决方案!现在接受您的答案:)只是一个后续问题:是否最好使用os.path.abspath(\uuu文件\uu)
作为所有情况下的默认值,而不是\uu文件\uu
?
Path('t.py').absolute().ancestor(2)