如何在Python 2.5中获取相对文件路径?

1 投票
1 回答
1413 浏览
提问于 2025-04-17 14:20

我之前在写一个脚本的时候用的是Python 2.6,但因为一些要求,我需要把这个脚本降级到Python 2.5。我该怎么在Python 2.5中获取相对路径呢?

我之前是用:

os.path.relpath(path[, start])

但是这个功能是从2.6版本开始有的,所以我在2.5中不能用了。

谢谢!

相关问题:

1 个回答

2

试试这个链接:Python中的相对路径,里面应该有对你有帮助的信息。

>>> import sys
>>> import os.path
>>> sys.path[0]
'C:\\Python25\\Lib\\idlelib'
>>> os.path.relpath(sys.path[0], "path_to_libs") # if you have python 2.6
>>> os.path.join(sys.path[0], "path_to_libs")
'C:\\Python25\\Lib\\idlelib\\path_to_libs'

编辑:我找到了一些更有用的内容,链接是http://www.saltycrane.com/blog/2010/03/ospathrelpath-source-code-python-25/。这是James Gardner的重新实现:

from posixpath import curdir, sep, pardir, join

def relpath(path, start=curdir):
    """Return a relative version of a path"""
    if not path:
        raise ValueError("no path specified")
    start_list = posixpath.abspath(start).split(sep)
    path_list = posixpath.abspath(path).split(sep)
    # Work out how much of the filepath is shared by start and path.
    i = len(posixpath.commonprefix([start_list, path_list]))
    rel_list = [pardir] * (len(start_list)-i) + path_list[i:]
    if not rel_list:
        return curdir
    return join(*rel_list)

撰写回答