Le chemin absolu UNIX commence par «/», alors que Windows commence par l'alphabet «C:» ou «\». Python a-t-il une fonction standard pour vérifier si un chemin est absolu ou relatif?
142
os.path.isabs
renvoie True
si le chemin est absolu, False
sinon. La documentation dit que cela fonctionne sous Windows (je peux confirmer que cela fonctionne sous Linux personnellement).
os.path.isabs(my_path)
os.path.isabs('c:\\')
renvoie False.Et si ce que vous voulez vraiment est le chemin absolu, ne vous souciez pas de vérifier si c'est le cas, obtenez simplement le
abspath
:la source
Utilisez
os.path.isabs
.la source
la source
En fait, je pense qu'aucune des réponses ci-dessus n'a abordé le vrai problème: les chemins multiplateformes. Ce que fait os.path est de charger la version dépendante du système d'exploitation de la bibliothèque 'path'. la solution est donc de charger explicitement la bibliothèque de chemins (OS) appropriée:
la source
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
De
python 3.4
pathlib est disponible.la source
Path('\tmp').is_absolute()
donne correctementFalse
, tandis queos.path.isabs('\tmp')
donne de manière incorrecteTrue
. (Certains diraient que\tmp
c'est un chemin absolu sur Windows, mais ce n'est vrai que pour une définition très inutile d'un chemin absolu .)une autre façon si vous n'êtes pas dans le répertoire de travail actuel, un peu sale mais cela fonctionne pour moi.
la source