Как стать автором
Обновить

8 команд для Python по работе с файлами и файловой системой, которые обязательно нужно знать

Время на прочтение4 мин
Количество просмотров88K
Всего голосов 60: ↑46 и ↓14+32
Комментарии15

Комментарии 15

Все примеры из этой статьи размещены в Google Colab Notebook (ссылка на ресурс — в конце статьи).

А ссылку встроить прямо здесь очень сложно?

… а теперь выкидываем все, что os.path и заменяем на pathlib.

НЛО прилетело и опубликовало эту надпись здесь

Оригинал от 7 февраля сего года. Но писал, видимо, специалист по DS/ML, а не Python. Хотя для shutil.copy в pathlib нет эквивалента.

…что, тем не менее, ничуть не мешает использовать pathlib.

на самом деле полно мест где еще живёт 2.7 версия. например почти весь софт для кино — сидит на 2.7. они уже не один год обещают перейти на 3ю версию, но воз и ныне там.

а если вы застряли в 2й версии, то os вполне не плохой, пусть и жутко устаревший, вариант. но даже во 2й версии есть как минимум glob для нормального чтения папок…
Для них есть pypi.org/project/pathlib2
os нужен только если не хочется тащить модули в скрипт по какой-то причине.
Кроме того они сейчас очень активно переходят как раз на py3, т.к. py2 — это жуткий тяжёлый костыль уже.

PS: getcwd покажет откуда запустили скрипт, зачем это нужно — большой вопрос.

А как же примеры pathlib?

Deluar


Зачем переводить плохие вредные статьи? Вас же читают новички, которые потом пишут адовый говнокод в своих "ноутбуках" и не понимают, что в этом такого, в статьях же пишут "обязательно нужно знать". Хотите написать что-то более полезное, напишите про pathlib, в чём его преимущества и недостатки, когда именно надо использовать shutil и почему не надо использовать os.path, напишите про PyFilesystem, про fsspec. Хватит всякий мусор постить!

Полезно, однако
Если же мы попытаемся создать каталог, который уже существует, то получим исключение.
Именно поэтому рекомендуется всегда проверять наличие каталога с определенным названием перед созданием нового:
Но даже проверив отсутствие каталога — исключение надо обрабатывать, мало ли кто успеет каталог создать — после проверки, но еще до создания.
И тогда на самом деле и проверка на существования каталога не особо нужна… т.к. в случае существования все равно будет исключение, которое будет обработано.

Ничего вручную проверять не надо, надо пользоваться нормальными инструментами. Берете pathlib.Path, его метод mkdir принимает флаг exist_ok.


Path('~/foo/bar/baz').expanduser().mkdir(parents=True, exist_ok=True)

Если хотите обернуть в исключение на случай отказа в доступе или ещё какой-то IO Error — пожалуйста.

import author
import os
author.translate(help(os.path))


Где-то так ;)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий