如何在Python 2.5中获取相对文件路径?
我之前在写一个脚本的时候用的是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)