Библиотека Python разработчика | Книги по питону
19.5K subscribers
1.05K photos
391 videos
82 files
988 links
Полезные материалы для питониста по Фреймворкам Django, Flask, FastAPI, Pyramid, Tornado и др.

По всем вопросам @evgenycarter

РКН clck.ru/3Ko7Hq
Download Telegram
Python: эффективное переименование файлов в директории

Если вам нужно быстро переименовать несколько файлов, вам поможет следующий сниппет на Python, использующий модуль os. Допустим, мы хотим добавить префикс "new_" к именам файлов. Вот как это будет выглядеть:

import os

for filename in os.listdir('.'):
if filename.endswith('.txt'):
os.rename(filename, f'new_{filename}')



Этот код выбирает все файлы с расширением .txt в текущей директории и добавляет к их именам префикс "new_". В зависимости от ваших требований вы можете модифицировать условия отбора файлов и способ формирования новых имен.


Продвинутое групповое переименование
Удаление префиксов и предотвращение конфликтов имен файлов
Если вы хотите удалить префикс (например "CHEESE_") из имени файла и при этом не вызвать конфликт перезаписи файлов, используйте следующий код:

import os

for filename in os.listdir('.'):
if filename.startswith('CHEESE_'):
new_filename = filename.replace('CHEESE_', '', 1)
if not os.path.exists(new_filename):
os.rename(filename, new_filename)



Подобный скрипт удаляет префикс "CHEESE_" из имени файла (однообразная замена), затем проверяет наличие файла с таким новым именем и затем переименовывает оригинальный файл.

Использование регулярных выражений для обработки сложных шаблонов имен
Для работы со сложными шаблонами имен файлов будет полезен модуль re:

import os
import re

pattern = re.compile(r'^(CHEESE_)(.*)')

for filename in os.listdir('.'):
match = pattern.match(filename)
if match:
new_filename = match.group(2)
if not os.path.exists(new_filename):
os.rename(filename, new_filename)


Этот код применяет регулярные выражения для отбора нужных частей имени файла, а затем проверяет, не создавалось ли раньше файла с таким новым именем, чтобы избежать дублирования.

Рекурсивное переименование файлов с помощью os.walk
Чтобы переименовать файлы во всех поддиректориях, используйте функцию os.walk:

import os

for root, dirs, files in os.walk('.'):
for filename in files:
if 'CHEESE_' in filename:
new_filename = filename.replace('CHEESE_', '')
original_path = os.path.join(root, filename)
new_path = os.path.join(root, new_filename)
if not os.path.exists(new_path):
os.rename(original_path, new_path)


Этот сниппет обходит все поддиректории, переименовывая файлы и сохраняя историю их предыдущих расположений.

Профессиональные рекомендации и подготовка к будущему
Будьте готовы к возможным ошибкам
Никогда не забывайте обрабатывать возможные ошибки и исключительные ситуации:

try:
os.rename(original_path, new_path)
except OSError as e:
print(f"Error: {e}")


Такой подход поможет вам избежать непредсказуемых проблем и ситуаций, когда файлы могут быть заняты другими процессами.

Современные подходы: применение модуля pathlib
Для эффективного решения задачи переименования файлов рекомендуется использовать модуль pathlib:

from pathlib import Path

folder = Path('.')

for file_path in folder.glob('*.txt'):
file_path.rename(f'new_{file_path.name}')


С pathlib получается работать с файловыми шаблонами и структурированными путями гораздо удобнее.

Создайте резервную копию файлов перед началом работы
Бэкап перед важной работой с файлами -- это залог вашего спокойствия:


import shutil

shutil.copy2(original_path, backup_path)


👉@BookPython
👍3🔥1
Что плохого в следующем коде?

Ответ:
В Python нет объявлений переменных, поэтому он должен сам определить их область действия. Если внутри функции имеется обращение к переменной, то она считается локальной. Переменная count выше является глобальной, поэтому код выбрасывает ошибку.

👉@BookPython
👎5👍4
Основы парсинга на Python: от Requests до Selenium

Бывают ситуации, когда нужно автоматизировать сбор и анализ данных из разных источников. Например, если хочется мониторить курс рубля в режиме реального времени. Для решения подобных задач применяют парсинг.

В этой статье кратко рассказываем, как парсить данные веб-сайтов с помощью Python. Пособие подойдет новичкам и продолжающим — сохраняйте статью в закладки и задавайте вопросы в комментариях. Подробности под катом!

https://habr.com/ru/companies/selectel/articles/754674/

👉@BookPython
👍2
Сравнение производительности dict() и {} в Python

Какое-то время назад, во время разбора кода, мы обсудили выбор dict() вместо {} в новом коде на Python. Коллега утверждал, что dict() более читаем и чётче выражает предназначение кода, поэтому следует предпочесть его. Меня это не убедило, но в тот момент контраргументов не нашлось, поэтому я воздержался.

Это заставило меня задуматься: в чём разница между типом dict и литеральным выражением {}?

Давайте изучим этот вопрос.

https://madebyme.today/blog/python-dict-vs-curly-brackets/

👉@BookPython
👍6
5 неочевидных возможностей FastAPI: упрощаем работу с бэкендом на Python

FastAPI - это современный веб-фреймворк, разработанный на языке Python. В последнее время он приобрел большую популярность. Его структура разработки очень похожа на Flask, который был де-факто вариантом для тех, кто начинал веб-разработку на Python. FastAPI прост в использовании, его документация хорошо написана и проста в освоении.

1️⃣Включите Flask, Django, Dash или любой другой WSGI
2️⃣Смонтируйте отдельные приложения FastAPI для разных маршрутов
3️⃣Разделите маршруты FastAPI на разные файлы
4️⃣Добавьте шаблоны Jinja и статические файлы
5️⃣Используйте модель обработки конфигурации из Flask

https://levelup.gitconnected.com/5-advance-features-of-fastapi-you-should-try-7c0ac7eebb3e

👉@BookPython
👍2👎1
Шпаргалка и краткое руководство по #Flask

👉@BookPython
👍4
Уроки по Flask с нуля. Часть 1

Flask #1: Что это такое? Простое WSGI-приложение
Flask #2: Использование шаблонов страниц сайта
Flask #3: Контекст приложения и контекст запроса
Flask #4: Функция url_for и переменные URL-адреса
Flask #5: Подключение внешних ресурсов и работа с формами
Flask #6: Мгновенные сообщения - flash, get_flashed_messages
Flask #7: Декоратор errorhandler, функции redirect и abort
Flask #8: Создание БД, установление и разрыв соединения при запросах
Flask #9: Добавление и отображение статей из БД
Flask #10: Способ представления полноценных HTML-страниц на сервере

источник

👉@BookPython
👍2🔥1
Подборка ВСЕХ наиболее известных алгоритмов, реализованных на Python

Данная подборка, прежде всего, предназначена для обучения, поскольку сами реализации могут быть менее эффективными, чем те, что в стандартной библиотеке Python, используйте их по своему усмотрению

https://github.com/TheAlgorithms/Python

👉 @BookPython
👍4