Пути в python
os.path.abspath()
Позволяет получить абсолютный пусть из относительного:
>>> import os
>>> os.path.abspath('sasd')
'/home/user/tmp/sasd'
>>> os.path.abspath(os.path.join('..', 'jaj'))
'/home/user/tmp/jaj'
os.path.join()
>>> import os
>>> some_file = os.path.join(os.path.sep, 'home', 'user', 'tmp')
>>> some_file = os.path.join(some_file, 'sasd')
>>> some_file
'/home/user/tmp/sasd'
# В винде:
>>> some_file
'\чо-то\там\ugly_ahh\path.txt'
os.path.sep
- это слэш или обратный слэш (разделитель) в зависимости от используемой OS.
Но, кстати, не очень хорошо, что код выдает разные результаты в зависимости от того, где ты его запустил - решением называют альтернативу модулям os.path
- patlib
(который появился в Python 3.4).
Модуль pathlib
>>> from pathlib import Path
>>> file_path = Path('path') / 'to' / 'some' / 'shit'
>>> file_path
PosixPath('path/to/some/shit')
>>> print(file_path)
path/to/some/shit
# 4 windows:
>>> from pathlib import PureWindowsPath
>>> PureWindowsPath(file_path)
PureWindowsPath('path/to/some/shit')
>>> print(PureWindowsPath(file_path))
path\to\some\shit
Проверка пути. os.path.exists()
Проверить, валиден ли путь, можно c помощью os.path.exists()
:
>>> os.path.exists('zaza')
True
>>> os.path.exists('./zaza')
True
>>> os.path.exists('13145345')
False
>>> os.path.exists('.')
True
>>> os.path.exists('..')
True
Проверка абсолютного пути. os.path.isabs()
Проверка, является ли путь абсолютным, (при этом путь не обязательно должен быть существующим):
>>> os.path.isabs('/path/to/some/shit')
True
>>> os.path.isabs('path/w/o/root/dir')
False
>>> os.path.isabs('.')
False
Соус: Книга “Простой Python” → Глава 14. “Файлы и каталоги”