Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
А это подборки моих материалов на канале
Приложение 4 к видеуроку (см. Приложение 1, Приложение 2, Приложение 3)
Справочная информация по библиотеке pathlib. Окончание
Сегодня последний пост по библиотеке pathlib. Хотел было снять какое-нибудь видео, но подхватил ОРВИ, а с соплями какое видео. Но зато закончим сегодня с вышеназванной библиотекой.
Открытие файлов, чтение запись
Удивительно, но и в pathlib есть методы открытия и чтения-записи в файл. Т.е. это уже третий способ вот такой работы с файлами, который мы прошли с вами. Однако у pathlib есть свои изюминки. Предварительно почитайте здесь, здесь, здесь, здесь, здесь.
- Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None) — нам здесь всё знакомо. См. вот здесь. Как и в случае с обычным open в Python можно использовать оператор with. Открыв файл таким образом можно далее использовать методы известные нам. Например
from pathlib import Path
p = Path('./txt1')
f = p.open()
s = f. readline()
print(s)
f.close() - Path.read_bytes() — возвращает двоичное содержимое файла. Метод сам открывает, а потом закрывает файл (sic!).
from pathlib import Path
p = Path('./txt2')
b = p.read_bytes()
print(b)
Результат работы этого фрагмента
b'eat this pie\n\n' - Path.read_text(encoding=None, errors=None) — читает текст из файла и декодирует его.
from pathlib import Path
p = Path('./txt2')
tx = p.read_text()
print(tx)
Результат выполнения фрагмента
eat this pie
съешь это пирог - Path.write_bytes(data) — открывает файл и пишет в него двоичные данные. Если файл существует, то он перезаписывается. После записи файл закрывается.
- Path.write_text(data, encoding=None, errors=None, newline=None) — открывает файл и пишет в него текст. Если файл существует, то он перезаписывается. После записи файл закрывается.
Работа со списками файлов в каталогах. В том числе и рекурсивный поиск
- Path.glob(pattern) — осуществляет поиск объектов в каталоге с учётом шаблона. Например
from pathlib import Path
p = Path('/bin')
ls1 = p.glob('g*')
print(list(map(str, ls1)))
Результат выполнения
['/bin/getkeycodes', '/bin/gawk', '/bin/getuseruid', '/bin/getopt', '/bin/grep', '/bin/getunimap', '/bin/gunzip', '/bin/gzip']
Изменение шаблона даёт возможность искать рекурсивно
from pathlib import Path
p = Path('/usr')
ls1 = p.glob('**/gda-b*')
print(list(map(str, ls1)))
Результат выполнения фрагмента
['/usr/share/icons/Papirus/64x64/apps/gda-browser-5.0.svg', '/usr/share/icons/Papirus/22x22/apps/gda-browser-5.0.svg', '/usr/share/icon
s/Papirus/48x48/apps/gda-browser-5.0.svg', '/usr/share/icons/Papirus/24x24/apps/gda-browser-5.0.svg', '/usr/share/icons/Papirus/16x16/a
pps/gda-browser-5.0.svg', '/usr/share/icons/Papirus/32x32/apps/gda-browser-5.0.svg', '/usr/share/app-info/icons/altlinux/64x64/gda-brow
ser-5.0.png', '/usr/share/app-info/icons/altlinux/128x128/gda-browser-5.0.png'] - Path.rglob(pattern) — а этот метод будет сразу осуществлять рекурсивно.
- Path.iterdir() — итератор для получения списка объектов указанного каталога
from pathlib import Path
p = Path('/usr')
ls = list(map(str, [fl for fl in p.iterdir()]))
print(ls)
Результат выполнения фрагмента
['/usr/tmp', '/usr/etc', '/usr/lib', '/usr/bin', '/usr/libexec', '/usr/games', '/usr/libx32', '/usr/src', '/usr/local', '/usr/sbin', '/
usr/lib64', '/usr/include', '/usr/share']
Наш справочник по pathlib закончился. Но наш канал продолжает писать о Python и вообще программировании
Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.