2011-10-26 135 views
3

我的问题几乎是标题所暗示的。我的研究使我去尝试这样的:从python的相对路径中找到绝对路径

import os 
pathname = os.path.abspath("some/relative/directory") 
print pathname 

这个问题是,每当我做这样的事情,它只是返回给我任何相对目录?我的蟒蛇目录之前。例如:

C:\ Python27 \一些\相对\目录

这甚至不是我的计算机上的现有目录。我明白,python解释器默认搜索工作目录,但我想要做的是让我的整个计算机搜索包含我指定的部分目录的绝对路径。

这个的目的是为我创建一个可以在任何计算机上搜索任意目录的exe(使用py2exe)。有没有一种方法可以在标准库或通过一些可用的模块中进行 - 或者我需要自己实现算法吗?

+1

你的意思是你想搜索你的整个硬盘的路径看起来像那样?或者是什么? –

回答

3

abspath基于getcwd。很可能,您当前的工作目录根本不符合您的期望。

您可以更改启动脚本的代码,手动更改目录,或者在Python中使用chdir

+1

@本,没有abspath不会做那样的事情。然后您可能会想到这样的算法更复杂。例如,你使用了哪一种[树遍历]算法(http://en.wikipedia.org/wiki/Tree_traversal)算法,如果有多个匹配项,你会怎么做,以及如果文件系统发生变化会发生什么搜索? –

+0

嗯,我很新的python,但我希望有一个现有的算法在某些模块中...... - 是否有一个简单的方法返回找到的第一个匹配? – Ben

+0

@Ben,你应该编辑你的问题,并把类似于你删除的评论。 –

0

你试过os.path.realpath("my/relative/dir")?实际上,这个目录看起来可能不存在,但如果它确实存在,它将解决符号链接和其他问题。

+0

我也试过这个,但它仍然只是返回C:\ Python27 \ my \ relative \ dir - 基本上是C:\ Python27 +我传入的任何字符串。 – Ben