Инструменты командной строки из стандартной библиотеки Python 3

Краткое содержание для тех, кому совершенно некогда читать эту страницу текста:

$ python -m http.server                           
# Создать веб-сервер, обслуживающий файлы, которые относятся к текущей директории

$ python -m http.server 8080                      
# Запустить веб-сервер на порту 8080

$ python -m http.server -b 127.0.0.1              
# Привязать веб-сервер к 127.0.0.1 
  
$ python -m http.server -d путь/к/файлам          
# Обслуживать файлы, находящиеся по адресу путь/к/файлам


$ echo '{"key": "value"}' | python3 -m json.tool  
# Вывод JSON-объектов в форматированном виде


$ python -m gzip data.json                        
# Сжать файл data.json  
 
$ python -m gzip -d data.json.gz                  
# Распаковать data.json.gz    


$ python -m zipfile -c archive.zip data.txt       
# Создать zip-файл с именем archive.zip из исходного файла data.txt

$ python -m zipfile -e archive.zip .              
# Распаковать zip-файл в текущую директорию


$ python -m tarfile -c archive.tar data.txt       
# Создать tar-файл с именем archive.tar из исходного файла data.txt

$ python -m tarfile -e archive.tar .              
# Распаковать tar-архив в текущую директорию

А теперь чуть подробнее.

http-сервер

Модуль http.server предоставляет простой интерфейс командной строки для создания очень простого веб-сервера.

Синтаксис:

$ python -m http.server 

Пример:

$ python -m http.server 8080

Эта команда создаст самый базовый веб-сервер для обслуживания файлов из текущей директории. Первый позиционный аргумент задает альтернативный порт.

ОпцияОписание
--bind, -b ADDRESSУказание альтернативного адреса привязки (по умолчанию — 0.0.0.0)
--directory, -d DIRECTORYУказание другой директории (по умолчанию — текущая рабочая директория)
--cgiЗапуск CGI-сервера

Узнать больше можно в документации.

JSON

Модуль json.tool предоставляет простой интерфейс командной строки для валидации и красивого вывода JSON-объектов.

Синтаксис:

$ python -m json.tool <INFILE> <OUTFILE>

Пример:

$ echo '{"key": "value"}' | python3 -m json.tool
{
    "key": "value"
}
$ echo '{key: "value"}' | python3 -m json.tool
Expecting property name: line 1 column 2 (char 1)

Если не указаны опциональные аргументы infile и outfile, будут использоваться sys.stdin и sys.stdout (соответственно).

ОпцияОписание
--sort-keysДля сортировки вывода словарей в алфавитном порядке, по ключу
--json-linesДля трактовки каждой строки ввода как отдельного JSON-объекта

Узнать больше можно в документации.

GZIP

Модуль gzip предоставляет простой интерфейс командной строки для сжатия или восстановления файлов (аналогично утилитам gzip и gunzip в GNU).

Синтаксис:

$ python -m gzip <FILE> 

Пример:

$ python -m gzip data.json

Эта команда сожмет файл data.json.

А эта — распакует файл data.json.gz:

$ python -m gzip -d data.json.gz
ОпцияОписание
--fastПрименить самый быстрый метод сжатия (само сжатие будет меньше)
--bestПрименить самый медленный метод сжатия (само сжатие будет наилучшим)
-d, --decompressРаспаковка (декомпрессия) указанного файла

Узнать больше можно в документации.

ZIP

Модуль zipfile предоставляет простой интерфейс командной строки для работы с ZIP-архивами.

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

Синтаксис:

$ python -m zipfile -c <ZIP-FILE> <SOURCE-FILE-1> [... <SOURCE-FILE-N>]

Пример:

$ python -m zipfile -c archive.zip data.txt

Эта команда создаст новый ZIP-архив с именем archive.zip, в котором будет содержаться файл data.txt.

Если вы хотите распаковать ZIP-архив в определенную директорию, используйте опцию -e.

Синтаксис:

$ python -m zipfile -e <ZIP-FILE> <OUTPUT-DIR>

Пример:

$ python -m zipfile -e archive.zip .

Эта команда извлечет все файлы из archive.zip в текущую директорию.

Чтобы лишь вывести список всех содержащихся в архиве файлов, используйте опцию -l.

Синтаксис:

$ python -m zipfile -l <ZIP-FILE> 

Пример:

$ python -m zipfile -l archive.zip

Эта команда выведет список всех файлов в архиве archive.zip.

ОпцияОписание
-c, --create ZIP-FILE SOURCE-1 [... SOURCE-N]Создать ZIP-файл из файлов-источников
-e, --extract ZIP-FILE OUTPUT-DIRРаспаковать ZIP-файл в указанную директорию
-l, --list ZIP-FILEВывести список файлов, содержащихся в ZIP-файле
-t, --test ZIP-FILEПроверить, валиден ли ZIP-файл

Узнать больше можно в документации.

TAR

Модуль tarfile предоставляет простой интерфейс командной строки для работы с TAR-архивами.

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

Синтаксис:

$ python -m tarfile -c <TAR-FILE> <SOURCE-FILE-1> [... <SOURCE-FILE-N>]

Пример:

$ python -m tarfile -c archive.tar data.txt

Эта команда создаст новый TAR-архив с именем archive.tar. В архиве будет содержаться файл data.txt.

Если вы хотите распаковать TAR-архив в определенную директорию, используйте опцию -e.

Синтаксис:

$ python -m tarfile -e <TAR-FILE> <OUTPUT-DIR>

Пример:

$ python -m tarfile -e archive.tar .

Эта команда извлечет файлы из archive.tar в текущую директорию.

Для вывода списка файлов, содержащихся в архиве, используйте опцию -l.

Синтаксис:

$ python -m tarfile -l <TAR-FILE> 

Пример:

$ python -m tarfile -l archive.tar

Эта команда выведет список всех файлов в TAR-архиве archive.tar.

ОпцияОписание
-c, --create TAR-FILE SOURCE-1 [... SOURCE-N]Создать TAR-файл из исходных файлов
-e, --extract TAR-FILE OUTPUT-DIRРаспаковать TAR-файл в указанную директорию
-l, --list TAR-FILEВывести список файлов в TAR-архиве
-t, --test TAR-FILEПроверить, валиден ли TAR -архив

Узнать больше можно в документации.