2013-01-31 54 views
1

我對腳本使用python 2.6,但對於需求限制,我必須將腳本降級到python 2.5,我如何才能使用python 2.5獲取相對路徑?如何獲取Python 2.5上的相對文件路徑?

我以前使用的:

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

但由於這是新的2.6,我不能再使用它。

感謝和問候!

回答

2

嘗試Relative paths in 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/ 這是一個重新實施由詹姆斯·加德納:

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) 
+0

我不能使用Python 2.6第一個選項。在Python 2.5上兼容secound選項? – Ghasfarost

+0

它應該。您可以打開鏈接並閱讀包含「適用於Python 2.5的版本」的完整說明。 – SamGamgee