Der absolute Pfad von UNIX beginnt mit '/', während Windows mit dem Alphabet 'C:' oder '\' ..__ beginnt. Hat Python eine Standardfunktion, um zu überprüfen, ob ein Pfad absolut oder relativ ist?
os.path.isabs
gibt True
zurück, wenn der Pfad absolut ist, False
, falls nicht. Die Dokumentation sagt, dass es in Windows funktioniert (ich kann bestätigen, dass es in Linux persönlich funktioniert).
os.path.isabs(my_path)
Und wenn das, was Sie wirklich wollen ist, der absolute Pfad ist, prüfen Sie nicht, ob dies der Fall ist, sondern holen Sie sich die abspath
:
import os
print os.path.abspath('.')
Verwenden Sie os.path.isabs
.
import os.path
os.path.isabs('/home/user')
True
os.path.isabs('user')
False
Ich glaube, keine der oben genannten Antworten hat das eigentliche Problem angesprochen: plattformübergreifende Wege. In os.path wird die vom Betriebssystem abhängige Version der "path" -Bibliothek geladen. Die Lösung besteht also darin, die entsprechende (OS-) Pfadbibliothek explizit zu laden:
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
Das os.path
-Modul enthält alles, was Sie brauchen.
eine andere Möglichkeit, wenn Sie sich nicht im aktuellen Arbeitsverzeichnis befinden, irgendwie schmutzig, aber es funktioniert für mich.
import re
path = 'my/relative/path'
# path = '..my/relative/path'
# path = './my/relative/path'
pattern = r'([a-zA-Z0-9]|[.])+/'
is_ralative = bool(pattern)