Стандартные библиотеки языка Python
Обзор стандартных библиотек Python
Python поставляется с большим набором встроенных модулей, которые обеспечивают множество функций без установки дополнительных пакетов. Эти модули покрывают работу с файловой системой, математические вычисления, обработку дат, регулярные выражения, сериализацию данных и многое другое. В этой статье рассмотрены наиболее часто используемые стандартные библиотеки и примеры их применения.
Как взаимодействовать с операционной системой для управления файлами и папками?
Модуль os предоставляет функции для работы с файловой системой, переменными окружения, процессами. Пример получения текущей рабочей директории и создания новой папки:
import os
# Получить текущую директорию
temp = os.getcwd()
print(temp)
# Создать новую папку
os.mkdir('my_folder')
# Проверить существование файла
print(os.path.exists('my_folder'))какие библиотеки нужны для python (библиотеки и модули python)
/Users/user/project True
библиотека время python (библиотека time в python)
Как выполнять сложные математические операции?
Модуль math содержит математические функции и константы. Пример вычисления квадратного корня, числа пи и факториала:
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793
print(math.factorial(5)) # 1204.0 3.141592653589793 120
Как управлять датами и временем?
Модуль datetime позволяет создавать, манипулировать и форматировать даты и время. Пример получения текущей даты и вычисления разницы:
from datetime import datetime, timedelta
now = datetime.now()
print(now)
print(now.strftime('%Y-%m-%d %H:%M:%S'))
yesterday = now - timedelta(days=1)
print(yesterday)2025-03-23 12:34:56.789012 2025-03-23 12:34:56 2025-03-22 12:34:56.789012
Как обмениваться данными в формате JSON?
Модуль json позволяет кодировать и декодировать данные в формате JSON. Пример преобразования словаря в JSON строку и обратно:
import json
data = {'name': 'Alice', 'age': 30}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)
parsed = json.loads(json_str)
print(parsed['name']){
"name": "Alice",
"age": 30
}
AliceКак выполнять поиск и замену текста по шаблону?
Модуль re предоставляет поддержку регулярных выражений. Пример поиска всех email адресов в тексте:
import re
text = 'Contact: alice@example.com, bob@test.org'
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
emails = re.findall(pattern, text)
print(emails)['alice@example.com', 'bob@test.org']
Как использовать специализированные контейнеры данных?
Модуль collections предоставляет дополнительные структуры данных: defaultdict, Counter, OrderedDict и другие. Пример подсчета частоты слов:
from collections import Counter, defaultdict
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(words)
print(counter)
# defaultdict для группировки
pairs = [('fruit', 'apple'), ('fruit', 'banana'), ('color', 'red')]
d = defaultdict(list)
for key, value in pairs:
d[key].append(value)
print(dict(d))Counter({'apple': 3, 'banana': 2, 'orange': 1})
{'fruit': ['apple', 'banana'], 'color': ['red']}Как создавать эффективные итераторы для комбинаторики?
Модуль itertools содержит функции для создания итераторов, полезных при работе с комбинаторными задачами. Пример бесконечного цикла и цепочки:
import itertools
# Бесконечный цикл
counter = itertools.cycle(['A', 'B', 'C'])
print([next(counter) for _ in range(5)])
# Цепочка итераторов
chain = itertools.chain([1,2], [3,4])
print(list(chain))['A', 'B', 'C', 'A', 'B'] [1, 2, 3, 4]
Расширенные примеры использования стандартных библиотек
В этом разделе приведены более сложные примеры, демонстрирующие возможности стандартных библиотек в реальных задачах.
Работа с файловой системой с помощью pathlib
Модуль pathlib предоставляет объектно-ориентированный интерфейс для работы с путями. Пример рекурсивного обхода папки и фильтрации файлов по расширению:
from pathlib import Path
def find_py_files(directory):
path = Path(directory)
if not path.exists():
return []
return [str(f) for f in path.rglob('*.py')]
print(find_py_files('/home/user/projects'))['/home/user/projects/main.py', '/home/user/projects/utils/helper.py']
Создание простого веб-сервера с http.server
Модуль http.server позволяет быстро запустить HTTP сервер для раздачи файлов. Пример запуска сервера на порту 8000:
from http.server import HTTPServer, SimpleHTTPRequestHandler
server = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
print('Server started at http://localhost:8000')
server.serve_forever()После запуска можно открыть в браузере http://localhost:8000 - отобразится содержимое текущей директории. Для остановки нажать Ctrl+C.
Парсинг аргументов командной строки с argparse
Модуль argparse упрощает разбор аргументов командной строки. Пример скрипта с опциями --name и --verbose:
import argparse
parser = argparse.ArgumentParser(description='Пример работы argparse')
parser.add_argument('--name', type=str, help='Имя пользователя', required=True)
parser.add_argument('--verbose', action='store_true', help='Подробный вывод')
args = parser.parse_args()
if args.verbose:
print(f'Привет, {args.name}! (подробный режим)')
else:
print(f'Привет, {args.name}!')$ python script.py --name Alice --verbose Привет, Alice! (подробный режим)
Многопоточность с threading
Модуль threading позволяет выполнять несколько задач параллельно. Пример запуска двух потоков, которые выводят числа:
import threading
import time
def print_numbers(prefix, count, delay):
for i in range(count):
print(f'{prefix}: {i}')
time.sleep(delay)
thread1 = threading.Thread(target=print_numbers, args=('A', 3, 0.1))
thread2 = threading.Thread(target=print_numbers, args=('B', 3, 0.15))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print('Готово')A: 0 B: 0 A: 1 B: 1 A: 2 B: 2 Готово
Работа с конфигурационными файлами с configparser
Модуль configparser читает и записывает INI-файлы. Пример чтения конфигурации и доступа к секциям:
import configparser
config = configparser.ConfigParser()
config.read('settings.ini')
database = config['DEFAULT']
print(f'DB host: {database.get("host")}')
print(f'DB port: {database.get("port", "5432")}')
# Создание нового конфига
config2 = configparser.ConfigParser()
config2['DEFAULT'] = {'host': 'localhost', 'port': '3306'}
with open('new_config.ini', 'w') as f:
config2.write(f)Предполагается, что файл settings.ini существует. Пример вывода:
DB host: localhost DB port: 5432
Использование subprocess для запуска внешних команд
Модуль subprocess позволяет запускать внешние процессы и получать их вывод. Пример выполнения команды ls в Linux и захват результата:
import subprocess
result = subprocess.run(['ls', '-la'], capture_output=True, text=True)
print(result.stdout[:200]) # первые 200 символов
if result.returncode != 0:
print('Ошибка:', result.stderr)total 24 drwxr-xr-x 5 user staff 160 Mar 23 12:00 . drwxr-xr-x 3 user staff 96 Mar 23 11:00 .. -rw-r--r-- 1 user staff 123 Mar 23 12:00 example.py ...