Réponses:
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)
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
:
import os
print os.path.abspath('.')
Utilisez os.path.isabs
.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
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:
import ntpath
import posixpath
ntpath.isabs("Z:/a/b/c../../H/I/J.txt")
True
posixpath.isabs("Z:/a/b/c../../H/I/J.txt")
False
def path_is_abs(p): return (len(p) > 1) and (p[0] == '/' or p[1] == ':')
De python 3.4
pathlib est disponible.
In [1]: from pathlib import Path
In [2]: Path('..').is_absolute()
Out[2]: False
In [3]: Path('C:/').is_absolute()
Out[3]: True
In [4]: Path('..').resolve()
Out[4]: WindowsPath('C:/the/complete/path')
In [5]: Path('C:/').resolve()
Out[5]: WindowsPath('C:/')
Path('\tmp').is_absolute()
donne correctement False
, tandis que os.path.isabs('\tmp')
donne de manière incorrecte True
. (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 .)
os.path.isabs('c:\\')
renvoie False.