Найти тему
programmer's notes (python and more)

Стандартные библиотеки в Python. Библиотека pathlib. Знакомство. Приложение 1 к видео 13

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

А это подборки моих материалов на канале

Приложение 1 к уроку

О библиотеке pathlib

В видеоуроке 13 я не много рассказал о библиотеке pathlib. Сегодня в приложении я сделаю тоже, но в текстовом варианте. В ещё одном приложении я сделаю не большой справочник по pathlib.

Библиотека занятная, я вам скажу. Основным модулем в ней является path. Так что подключаются к ней обычно

from pathlib import path

Возможности библиотеки можно разделить на следующие разделы:

  • Манипуляция путями файловой системы.
  • Получение информации о файле или каталоге. Изменение режима доступа.
  • Работа со списками файлов в каталогах. В том числе и рекурсивный поиск.
  • Создание, удаление, переименование файлов и каталогов.
  • Открытие файлов, чтение запись.

В следующем приложении мы подробнее остановимся на этих разделах. Сегодня же просто несколько примеров.

В данном примере продемонстрированы разные возможности библиотеки pathlib.
#!/usr/bin/python3
from pathlib import Path
print(Path.cwd()) #текущий каталог
print(Path.home()) #домашний каталог
pt = Path.home() / 'mydir' / 'ert'
print(pt)
file = Path.cwd() / 'text'
print(file.stat().st_size)
print(file.owner()) #собственник файла или каталога
print(file.group()) #группа файла или каталога
pdir = Path('/home/pirogov/Yandex.Disk/about.odt')
print(pdir. expanduser()) #разворачивания пути
# в данном примере тривиальное
print(pdir.stat().st_size) #размер файла


Результат выполнения программы

/home/pirogov/Yandex.Disk/projects/programming/python2/pathlib
/home/pirogov
/home/pirogov/mydir/ert
117
pirogov
pirogov
/home/pirogov/Yandex.Disk/about.odt
68781


Особенно хочу обратить внимание на вот такой способ формирования пути к файлу или каталогу.

pt = Path.home() / 'mydir' / 'ert'

pt это объект, определяющий путь к файлу или каталогу. Не плохо, да.

Следующий пример. Получить список файлов в каталоге. При чём можно использовать маску. '*' - это все файлы или каталоги.

#!/usr/bin/python3
from pathlib import Path
pt = input()
pt = Path(pt)
fl = sorted(map(str, pt.glob('*')))
print(*fl, sep='\n')
print(len(fl))

Например для строки '/' получаем содержимое корневого каталога

/bin
/boot
/dev
/etc
/home
/lib
/lib64
/libx32
/lost+found
/media
/mnt
/opt
/proc
/root
/run
/sbin
/selinux
/srv
/sys
/tmp
/usr
/var
22

Но библиотека позволяет также осуществлять рекурсивный поиск

#!/usr/bin/python3
from pathlib import Path
pt = input()
pt = Path(pt)
fl = sorted(map(str, pt.glob('**/*')))
print(*fl, sep='\n')
print(len(fl))

Программа аналогичная предыдущей, но ищет рекурсивно. Мощное средство.

Ну и наконец ещё несколько примеров возможностей библиотеки.

#!/usr/bin/python3
from pathlib import Path
# информация о файле-каталоге
p1 = Path('./text')
print(p1.exists()) # существует ли файл
p2 = Path('./temp')
print(p2.is_dir()) # это каталог
p3 = Path('./Downloads')
print(p3.is_symlink()) # это символьная ссылка
# создать каталог
newd = Path('./new')
newd.mkdir(0o700)

Результат выполнения программы

True
True
True

Кроме того в текущем каталоге будет создан подкаталог.

Пока всё, в следующем приложении продолжим говорить о библиотеке pathlib.

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Что мне ваши библиотеки. Лучше я напишу свою собственную
Что мне ваши библиотеки. Лучше я напишу свою собственную