Утилиты, встроенные в Python

Почти на всех машинах (за которые отвечаю я) установлен третий пайтон. А вместе с интерпретатором устанавливаются и модули стандартной библиотеки, некоторые из которых могут работать как самостоятельные утилиты командной строки. Я, например, давно уже пользуюсь модулем http.server для переброса файлов между машинами одной сети. Или json.tool для человеко-читаемого отображения json-данных (хотя постоянно забываю опцию --no-ensure-ascii для отображения русскоязычных строк).

Вот я и решил погрепать стандартные модули Python 3.11 на предмет встроенных полезных утилит.

Документированные модули

У меня нет желания дублировать здесь официальную документацию. Поэтому для модулей, имеющих описание режима утилиты командной строки на сайте docs.python.org, я просто оставлю ссылки:

The calendar module can be executed as a script from the command line to interactively print a calendar

The Python Profilers

dis - Disassembler for Python bytecode

The gzip module provides a simple command line interface to compress or decompress files.

http.server - HTTP servers

The json.tool module provides a simple command line interface to validate and pretty-print JSON objects

Tools for pickle developers

pydoc - Documentation generator and online help system

py_compile - Compile Python source files

site - Site-specific configuration hook

The tarfile module provides a simple command-line interface to interact with tar archives

timeit — Measure execution time of small code snippets

tokenize — Tokenizer for Python source

trace - Trace or track Python statement execution

The unittest module can be used from the command line to run tests from modules, classes or even individual test methods

Creation of virtual environments is done by executing the command venv

webbrowser - Convenient web-browser controller

zipapp - Manage executable Python zip archives

The zipfile module provides a simple command-line interface to interact with ZIP archives

Недокументированные модули

Но существует ещё ряд встроенных в Python модулей, которые могут быть использованы в качестве утилиты командной строки, хотя это не описано в документации.

base64

Недокументированная (на текущий момент) возможность запуска модуля base64 для [рас-]кодирования данных в формате Base64. Утилита оперирует переданным в качестве аргумента файлом, но встретив значение `-` переключается на работу со стандартным потоком ввода. Пример:

encodings.rot_13

Утилита кодирования в ROT13: простой шифр для символов английского алфавита, реализуемый сдвигом ("rotate") на 13 позиций в алфавите. Символы не из английского алфавита остаются "как есть", например:

filecmp

Модуль сравнения файлов двух директорий на файловой системе.

Например создадим тестовые данные:

Результат сравнения директорий:

Указав ключ -r утилита будет сравнивать рекурсивно (все под-директории).

ftplib

Модуль реализации FTP клиента. Как можно догадаться, утилита командной строки этого модуля реализует простой FTP клиент. Например следующая команда:

Данные для аутентификации (в случае необходимости) берутся из файла `~/.netrc`. Утилите можно задать альтернативный файл .netrc через аргумент -r.

# UPD: 2024-11-27 Конкретный пример

Попалась в интернете ссылка:

ftp://ftp.taygeta.com/pub/Forth/Compilers/native/unix/this4th.zip

"Современные" браузеры ftp уже не открывают, требуют внешнее приложение для открытия такой ссылки. С использованием модуля ftplib этот файл может быть скачан следующей командой:

mimetypes

Модуль работы с MIME. В режиме утилиты командной строки можно как искать тип содержимого по имени файла (или его полному URL), например:

Так и наоборот: по типу содержимого искать подходящее расширение файла. Для этого нужно указывать аргумент -e, например:

platform

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

sysconfig

Модуль в режиме утилиты командной строки выводит общую информацию о платформе, пути и конфигурацию, с которой был собран Python (опции из Makefile и заголовочного файла pyconfig.h).

inspect

Модуль само-рефлексии python-кода. Утилита командной строки по умолчанию получает имя python-объекта в формате "module:qualname", а в стандартный поток вывода печатает исходный код реализации этого объекта. Например:

Если указать аргумент -d, то в стандартный поток вывода печатается мета-информация об объекте. Например:

pyclbr

Модуль в качестве утилиты командной строки выводит индексную информацию о python-модуле. Целевой модуль может быть задан как просто по имени, так и путём к py-файлу, например: