1
我對腳本使用python 2.6,但對於需求限制,我必須將腳本降級到python 2.5,我如何才能使用python 2.5獲取相對路徑?如何獲取Python 2.5上的相對文件路徑?
我以前使用的:
os.path.relpath(path[, start])
但由於這是新的2.6,我不能再使用它。
感謝和問候!
我對腳本使用python 2.6,但對於需求限制,我必須將腳本降級到python 2.5,我如何才能使用python 2.5獲取相對路徑?如何獲取Python 2.5上的相對文件路徑?
我以前使用的:
os.path.relpath(path[, start])
但由於這是新的2.6,我不能再使用它。
感謝和問候!
嘗試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)
我不能使用Python 2.6第一個選項。在Python 2.5上兼容secound選項? – Ghasfarost
它應該。您可以打開鏈接並閱讀包含「適用於Python 2.5的版本」的完整說明。 – SamGamgee