Найти в Дзене

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

Оглавление

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

Сколько часов в день вы программируете?  Три часа? Это мало.
Сколько часов в день вы программируете? Три часа? Это мало.