web-dev-qa-db-fra.com

Comment vérifier si un chemin est un chemin absolu ou un chemin relatif en mode multiplateforme avec Python?

Le chemin absolu UNIX commence par '/', alors que Windows commence par les lettres 'C:' ou '\' . Est-ce que python a une fonction standard pour vérifier si un chemin est absolu ou relatif? 

110
prosseek

os.path.isabs renvoie True si le chemin est absolu, False sinon. La documentation indique que cela fonctionne sous Windows (je peux confirmer que cela fonctionne personnellement sous Linux).

os.path.isabs(my_path)
159
Donald Miner

Et si ce que vous voulez vraiment est le chemin absolu, ne cherchez pas à vérifier si c'est le cas, procurez-vous simplement la abspath:

import os

print os.path.abspath('.')
33
Wayne Werner

Utilisez os.path.isabs .

14
kennytm
import os.path

os.path.isabs('/home/user')
True

os.path.isabs('user')
False
6
Alex Bliskovsky

En fait, je pense qu'aucune des réponses ci-dessus n'a abordé le vrai problème: les chemins multi-plateformes. Os.path charge la version dépendante du système d’exploitation de la bibliothèque 'path'. la solution consiste donc à charger explicitement la bibliothèque de chemins d'accès appropriée (OS):

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
3
Shoham

Le module os.path aura tout ce dont vous avez besoin.

1
Rob Lourens

une autre façon si vous n'êtes pas dans le répertoire de travail actuel, un peu sale mais cela fonctionne pour moi.

import re
path = 'my/relative/path'
# path = '..my/relative/path'
# path = './my/relative/path'

pattern = r'([a-zA-Z0-9]|[.])+/'
is_ralative = bool(pattern)
0
Mahendra