Skip to content

Пути в python



os.path.abspath()

Позволяет получить абсолютный пусть из относительного:

Python
>>> import os
>>> os.path.abspath('sasd')
'/home/user/tmp/sasd'

>>> os.path.abspath(os.path.join('..', 'jaj'))
'/home/user/tmp/jaj'

os.path.join()

Python
>>> 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

Python
>>> 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():

Python
>>> 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()

Проверка, является ли путь абсолютным, (при этом путь не обязательно должен быть существующим):

Python
>>> os.path.isabs('/path/to/some/shit')
True
>>> os.path.isabs('path/w/o/root/dir')
False
>>> os.path.isabs('.')
False


Соус: Книга "Простой Python" --> Глава 14. "Файлы и каталоги"

python