Python os.chemin d'accès.relpath comportement
J'ai un répertoire bar
à l'intérieur d'un répertoire foo
, avec fichier foo_file.txt
dans le répertoire foo
et fichier bar_file.txt
dans le répertoire bar
; c'est à dire
computer$ ls
foo/
computer$ ls foo/
bar/ foo_file.txt
computer$ ls foo/bar/
bar_file.txt
À l'aide de l'python os.chemin d'accès.relpath fonction, je m'attends à:
os.path.relpath('foo/bar/bar_file.txt', 'foo/foo_file.txt')
à me donner:
'bar/bar_file.txt'
Cependant, il me donne en fait:
'../bar/bar_file.txt'
Pourquoi est-ce? Est-il un moyen facile pour obtenir le comportement que je veux?
EDIT: C'est sur Linux avec Python 2.7.3
J'ai réalisé que je peux utiliser
os.path.relpath('foo/bar/bar_file.txt', os.path.dirname('foo/foo_file.txt'))
pour obtenir le résultat que je veux. Toujours curieux de savoir pourquoi le code d'origine ne fonctionne pas.OriginalL'auteur jveldridge | 2013-07-06
Vous devez vous connecter pour publier un commentaire.
os.path.relpath()
suppose que ses arguments sont des répertoires.OriginalL'auteur Ignacio Vazquez-Abrams
va donner le chemin d'accès relatif arg2 à partir du répertoire de arg1. Afin d'obtenir de arg2 à arg1 dans votre cas, vous auriez besoin de cd vers le répertoire(..), aller à la barre de répertoire(bar), puis le bar_file.txt. Par conséquent, le chemin d'accès relatif est
os.path.relpath(arg1, arg2)
va donner le chemin relatif de arg1 à partir de l'intérieur du répertoire de arg2OriginalL'auteur