Доброго времени суток, читатели, зрители моего канала 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.