Базовые модули Python для начинающих и опытных

Раздел: Основы Python -> Работа с модулями

Основные модули стандартной библиотеки Python

Как управлять файловой системой с помощью модуля os?

Основной способ

Модуль os предоставляет функции для работы с операционной системой. Например, получение текущего каталога и список файлов:

import os
current_dir = os.getcwd()
print("Текущий каталог:", current_dir)
files = os.listdir('.')
print("Файлы в каталоге:", files)

Python module attributes (атрибуты модуля в python)

Для объединения путей используется os.path.join(), что гарантирует корректный разделитель для платформы.

Вариант с модулем pathlib

Начиная с Python 3.4, рекомендуется использовать pathlib для объектно-ориентированной работы с путями:

from pathlib import Path
current_path = Path.cwd()
print("Текущий каталог:", current_path)
files = list(current_path.iterdir())
print("Файлы:", files)

Python module version (версия модуля python)

Такой подход удобнее для цепочек операций и кроссплатформенной совместимости.

Типичные проблемы и ошибки

  • Несоответствие слешей: на Windows используется обратный слеш, на Unix - прямой. os.path.join решает эту проблему.
  • Кодировка имен файлов: на некоторых системах имена могут быть в Unicode. Функции os возвращают строки в кодировке по умолчанию; возможны исключения UnicodeEncodeError.
  • Отсутствие прав доступа: при попытке прочитать запрещенные каталоги возникает PermissionError.

Как получить аргументы командной строки и свойства интерпретатора?

Основной способ: sys.argv

Модуль sys содержит список argv с аргументами, переданными скрипту. Первый элемент - имя скрипта.

import sys
print("Имя скрипта:", sys.argv[0])
print("Аргументы:", sys.argv[1:])

Python cpp module (взаимодействие python с модулями c++)

Также доступны sys.path (пути поиска модулей), sys.version (версия Python) и другие.

Вариант с argparse

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

import argparse
parser = argparse.ArgumentParser(description='Пример обработки аргументов')
parser.add_argument('--name', type=str, help='Имя пользователя')
parser.add_argument('--count', type=int, default=1, help='Количество')
args = parser.parse_args()
print(f"Привет, {args.name}! Количество: {args.count}")

Python module cv2 (модуль cv2 (opencv) в python)

Типичные проблемы и ошибки

  • Индекс за пределами: обращение к sys.argv[i] без проверки длины вызывает IndexError.
  • Неправильный тип аргумента: при использовании argparse можно задать тип, но если пользователь передаст не число для int, возникнет ошибка.

Какие математические операции доступны в модуле math?

Основные функции

Модуль math содержит тригонометрические, логарифмические, степенные и округляющие функции.

import math
print("Квадратный корень 16:", math.sqrt(16))
print("Синус 30 градусов:", math.sin(math.radians(30)))
print("Число пи:", math.pi)
print("Округление 3.7 вверх:", math.ceil(3.7))
print("Округление 3.2 вниз:", math.floor(3.2))

Python encodings module (модуль encodings в python)

Варианты: модули cmath и decimal

Для комплексных чисел используется cmath:

import cmath
print("Квадратный корень из -1:", cmath.sqrt(-1))

Platform module python (модуль platform в python)

Для высокой точности десятичных вычислений применяется модуль decimal:

from decimal import Decimal
result = Decimal('0.1') + Decimal('0.2')
print("0.1 + 0.2 =", result)  # точный результат 0.3

Python string module (модуль string в python)

Типичные проблемы и ошибки

  • Ошибка точности float: 0.1 + 0.2 не равно 0.3 из-за представления чисел с плавающей точкой. Для финансовых расчетов следует использовать decimal.
  • Домен ошибки: math.sqrt(-1) вызывает ValueError. Для комплексных чисел нужен cmath.

Как обрабатывать даты и время с помощью модуля datetime?

Основной способ: классы datetime, date, timedelta

from datetime import datetime, timedelta
now = datetime.now()
print("Сейчас:", now)
print("Текущая дата:", now.date())
print("Текущее время:", now.time())
future = now + timedelta(days=7)
print("Через 7 дней:", future)
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print("Форматированная дата:", formatted)

Module sys python (модуль sys в python)

Вариант: модуль time для низкоуровневой работы

import time
timestamp = time.time()
print("Текущая метка времени:", timestamp)
local_time = time.localtime(timestamp)
print("Локальное время:", time.strftime("%Y-%m-%d %H:%M:%S", local_time))

Python tkinter module (модуль tkinter в python)

Типичные проблемы и ошибки

  • Часовые пояса: по умолчанию datetime.now() возвращает наивное время (без часового пояса). Для работы с временными зонами используется pytz или zoneinfo (Python 3.9+).
  • Неправильный формат строки: strftime и strptime чувствительны к регистру и порядку символов.

Как читать и записывать данные в формате JSON?

Основной способ: модуль json

import json
data = {"name": "Alice", "age": 30, "city": "Moscow"}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print("JSON строка:")
print(json_str)
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)
with open("data.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)
print("Загруженные данные:", loaded)

Python types module (модуль types в python)

Варианты: библиотеки simplejson и orjson

simplejson - форк стандартного модуля с дополнительными возможностями:

import simplejson as json
print(json.dumps({"key": "value"}))

Python typing module (модуль typing в python)

orjson - быстрый модуль на Rust:

import orjson
print(orjson.dumps({"key": "value"}).decode())

Типичные проблемы и ошибки

  • Сериализация нестандартных объектов: datetime или пользовательские классы не могут быть сериализованы по умолчанию. Требуется задать параметр default.
  • Кодировка: без ensure_ascii=False не-ASCII символы будут экранированы (\uXXXX).
- Python base modules (базовые модули python)
- Module functions python (функции модуля в python)

Расширенные примеры использования базовых модулей

Ниже приведены более сложные сценарии работы со стандартными библиотеками Python.

1. Рекурсивный обход каталогов с os.walk

Пример
import os
for root, dirs, files in os.walk('/tmp'):
    for file in files:
        print(os.path.join(root, file))
    break  # только первый уровень для примера
# Результат (зависит от системы)
/tmp/file1.txt
/tmp/file2.log

2. Обработка аргументов командной строки с argparse

Пример
import argparse
parser = argparse.ArgumentParser(description='Поиск файлов')
parser.add_argument('pattern', type=str, help='Шаблон для поиска')
parser.add_argument('--path', default='.', help='Каталог для поиска')
args = parser.parse_args(['*.py', '--path', '/home/user'])
print('Ищем:', args.pattern, 'в', args.path)
Ищем: *.py в /home/user

3. Комбинации и перестановки с itertools

Пример
from itertools import combinations, permutations
items = ['A', 'B', 'C']
print('Комбинации по 2:', list(combinations(items, 2)))
print('Перестановки по 2:', list(permutations(items, 2)))
Комбинации по 2: [('A', 'B'), ('A', 'C'), ('B', 'C')]
Перестановки по 2: [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

4. Мемоизация с functools.lru_cache

Пример
from functools import lru_cache
@lru_cache(maxsize=32)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)
print([fibonacci(i) for i in range(10)])
print('Статистика кеша:', fibonacci.cache_info())
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Статистика кеша: CacheInfo(hits=8, misses=10, maxsize=32, currsize=10)

5. Подсчет элементов с collections.Counter

Пример
from collections import Counter
text = "Python is great and Python is powerful"
words = text.split()
count = Counter(words)
print('Топ 3:', count.most_common(3))
print('Общее число слов:', sum(count.values()))
Топ 3: [('Python', 2), ('is', 2), ('great', 1)]
Общее число слов: 6

6. Работа с часовыми поясами через zoneinfo

Пример
from datetime import datetime, timezone, timedelta
import zoneinfo
moscow_tz = zoneinfo.ZoneInfo("Europe/Moscow")
now_moscow = datetime.now(moscow_tz)
print("Московское время:", now_moscow)
utc_time = now_moscow.astimezone(timezone.utc)
print("UTC время:", utc_time)
Московское время: 2025-04-07 14:30:00+03:00
UTC время: 2025-04-07 11:30:00+00:00

Базовые модули Python - comments

En
Python base modules (python)