Python: bibliotecas que podem ser usadas como utilitários
A biblioteca padrão da linguagem Python disponibiliza diversos módulos que podem ser utilizados como utilitários de linha de comando:
Servidor de arquivos local (HTTP)
Muito útil quando precisamos disponibilizar arquivos para download para outras pessoas na rede.
$ python -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
Se você utilizar ele em conjunto com o utilitário [ngrok](https://ngrok.com)
você ainda consegue exportar esse servidor publicamente na Internet.
Formatador de JSON
É comum encontrar arquivos .json
sem nenhuma formatação no dia-a-dia e esses arquivos são bem difíceis de serem lidos sem alguma formatação.
A maioria dos editores de texto e utilitários como o jq
oferecem essa opção mas em alguns casos eles podem não estar disponível em um lugar onde exista um interpretador Python disponível (ex. em servidores de produção).
$ cat raw.json
{"id": 1234, "person": {"name": "John Doe", "address": {"street": "None Street", "number": "1"}, "birthdate": "1986-01-06"}}
$ cat raw.json | python -m json.tool
{
"id": 1234,
"person": {
"name": "John Doe",
"address": {
"street": "None Street",
"number": "1"
},
"birthdate": "1986-01-06"
}
}
Calendário
Esse é mais simples mas pode acontecer de você verificar uma data no calendário em uma máquina sem o utilitário cal
:
$ python -m calendar -h
usage: calendar.py [-h] [-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS] [-L LOCALE] [-e ENCODING] [-t {text,html}] [year] [month]
$ python -m calendar 2022 11
November 2022
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
base64 uuencode/uudecode
Esse é mais raro, mas... se precisar codificar ou decodificar textos em uuencode
ou base64
:
base64
$ echo 'encode this text' | python -m base64
ZW5jb2RlIHRoaXMgdGV4dAo=
$ echo 'encode this text' | python -m base64 | python -m base64 -d
encode this text
uuencode/uudecode
$ echo 'encode this text' | python -m uu
begin 666 -
196YC;V1E('1H:7,@=&5X= H
end
$ echo 'encode this text' | python -m uu | python -m uu -d
encode this text
ZIP, tar e gzip
É possível comprimir/descomprimir arquivos no formato ZIP.
ZIP
$ python -m zipfile
usage: zipfile.py [-h] (-l <zipfile> | -e <zipfile> <output_dir> | -c <name> [<file> ...] | -t <zipfile>)
zipfile.py: error: one of the arguments -l/--list -e/--extract -c/--create -t/--test is required
$ python -m zipfile -c example.zip raw.json # compress raw.json -> example.zip
$ python -m zipfile -l example.zip
File Name Modified Size
raw.json 2022-11-30 10:34:34 125
tar
$ python -m tarfile
usage: tarfile.py [-h] [-v] (-l <tarfile> | -e <tarfile> [<output_dir> ...] | -c <name> [<file> ...] | -t <tarfile>)
tarfile.py: error: one of the arguments -l/--list -e/--extract -c/--create -t/--test is required
$ python -m tarfile -c example.tar raw.json
$ python -m tarfile -l example.tar
raw.json
gzip
$ python -m gzip -h
usage: gzip.py [-h] [--fast | --best | -d] [file [file ...]]
A simple command line interface for the gzip module: act like gzip, but do not delete the input file.
positional arguments:
file
optional arguments:
-h, --help show this help message and exit
--fast compress faster
--best compress better
-d, --decompress act like gunzip instead of gzip
$ python -m gzip raw.json
$ python -m gzip -d raw.json.gz
$ cat raw.json
{"id": 1234, "person": {"name": "John Doe", "address": {"street": "None Street", "number": "1"}, "birthdate": "1986-01-06"}}
Plataforma
Se você precisar de informações sobre a plataforma em uso pelo Python:
$ python -m platform
macOS-13.0.1-arm64-arm-64bit
... e mais alguns outros
Existem alguns outros comandos dentro da biblioteca padrão do Python mas elas são úteis para programadores dessa linguagem. Se esse artigo tiver pelo menos 5 upvotes eu publico um novo artigo com o restante dos comandos.
Eu vou publicar esse tipo de conteúdo aqui primeiro e posteriormente replicarei ele no meu blog pessoal.