Комментарии 15
Все примеры из этой статьи размещены в Google Colab Notebook (ссылка на ресурс — в конце статьи).
А ссылку встроить прямо здесь очень сложно?
Оригинал от 7 февраля сего года. Но писал, видимо, специалист по DS/ML, а не Python. Хотя для shutil.copy в pathlib нет эквивалента.
…что, тем не менее, ничуть не мешает использовать pathlib.
а если вы застряли в 2й версии, то os вполне не плохой, пусть и жутко устаревший, вариант. но даже во 2й версии есть как минимум glob для нормального чтения папок…
Тогда лучше использовать это:
https://github.com/PyFilesystem/pyfilesystem2
os нужен только если не хочется тащить модули в скрипт по какой-то причине.
Кроме того они сейчас очень активно переходят как раз на py3, т.к. py2 — это жуткий тяжёлый костыль уже.
PS: getcwd покажет откуда запустили скрипт, зачем это нужно — большой вопрос.
А как же примеры pathlib?
Зачем переводить плохие вредные статьи? Вас же читают новички, которые потом пишут адовый говнокод в своих "ноутбуках" и не понимают, что в этом такого, в статьях же пишут "обязательно нужно знать". Хотите написать что-то более полезное, напишите про 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))
Где-то так ;)
8 команд для Python по работе с файлами и файловой системой, которые обязательно нужно знать