スクリプトにpython2.6を使用していましたが、要件の制限のために、スクリプトをpython 2.5にダウングレードする必要があります。どのようにして、python 2.5を使用して相対パスを取得できますか?
以前使用していたもの:
os.path.relpath(path[, start])
しかし、これは2.6からの新しいものなので、もう使用できません。
ありがとう、よろしく!
スクリプトにpython2.6を使用していましたが、要件の制限のために、スクリプトをpython 2.5にダウングレードする必要があります。どのようにして、python 2.5を使用して相対パスを取得できますか?
以前使用していたもの:
os.path.relpath(path[, start])
しかし、これは2.6からの新しいものなので、もう使用できません。
ありがとう、よろしく!
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/ これはJamesGardnerによる再実装です:
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)