Folha de Dicas do Python

Trechos frequentemente necessários de código Python

Conteúdo da página

Às vezes preciso disso, mas não consigo encontrá-lo imediatamente.
Então, estou mantendo todos aqui.

Eles não são algo novo,
apenas uma série de cópias e colagens,
mas funcionam para mim,
e espero que você também os encontre úteis.

Awesome Python in 3d

Comandos comuns do Anaconda

Verificar se o Conda está instalado

conda -V

Verificar se o Conda está atualizado

conda update conda

Criar um ambiente virtual

conda create -n newenvname python=3.12 anaconda

Ativar seu ambiente virtual

source activate newenvname

Instalar pacotes adicionais Python em um ambiente virtual

conda install -n newenvname [package]

Desativar seu ambiente virtual

source deactivate

Excluir o ambiente virtual

conda remove -n newenvname --all

Dependências do programa

Instalar dependências - Usando um arquivo de requisitos

Em vez de instalar pacotes individualmente, o pip permite que você declare todas as dependências em um Arquivo de Requisitos. Por exemplo, você poderia criar um arquivo requirements.txt contendo:

requests==2.18.4
google-auth==1.1.0

E instruir o pip a instalar todos os pacotes neste arquivo usando a bandeira -r:

python3 -m pip install -r requirements.txt

Congelar dependências

O pip pode exportar uma lista de todos os pacotes instalados e suas versões usando o comando freeze:

python3 -m pip freeze

produz algo como

requests==2.18.4
google-auth==1.1.0

O comando pip freeze é útil para criar Arquivos de Requisitos que podem recriar exatamente as versões de todos os pacotes instalados em um ambiente.

Desenhar um retângulo

import cv2

cv2.rectangle(img, (x1, y1), (x2, y2), color=(255,0,0), thickness=2)

x1,y1 ------
|          |
|          |
|          |
--------x2,y2

para anexar as perguntas subsequentes abaixo:

cv2.imwrite("my.png",img)

cv2.imshow("lalala", img)
k = cv2.waitKey(0) # 0==esperar para sempre

Tenho um objeto de imagem PIL e quero desenhar um retângulo nesta imagem. Quero usar o opencv2 e desenhar um retângulo, e depois converter de volta para o objeto PIL Image. Aqui está como faço:

# im é um objeto de imagem PIL
im_arr = np.asarray(im)
# converter array rgb para o formato bgr do opencv
im_arr_bgr = cv2.cvtColor(im_arr, cv2.COLOR_RGB2BGR)
# pts1 e pts2 são as coordenadas do canto superior esquerdo e inferior direito do retângulo
cv2.rectangle(im_arr_bgr, pts1, pts2,
              color=(0, 255, 0), thickness=3)
im_arr = cv2.cvtColor(im_arr_bgr, cv2.COLOR_BGR2RGB)
# converter de volta para o objeto Image
im = Image.fromarray(im_arr)

Parsing de argumentos fácil

import json

#---------------------------------------------------------------------------
def do_some_awesomeness(src_file, tgt_file):
    print('Convertendo algumas coisas de {} para {}'.format(src_file, tgt_file))

#---------------------------------------------------------------------------
def run():
    import argparse

    parser = argparse.ArgumentParser(description="Alguns mega úteis e eficientes ferramentas python.")
    parser.add_argument("-s", "--src", dest="src_file",
        help="nome do arquivo json de entrada")
    parser.add_argument("-t", "--tgt", dest="tgt_file",
        help="nome do arquivo json de saída")
    
    args = parser.parse_args()

    do_some_awesomeness(args.src_file, args.tgt_file)

if __name__ == '__main__':
    run()

Então chame-o assim:

python ave_roma.py --src 1.json --tgt 2.json

Carregar e salvar json

import json

def do_convert(src_file, tgt_file):

    with open(src_file) as f:
        src = json.load(f)

    tgt = src # :)

    with open(tgt_file, 'w', encoding='utf-8') as f:
        json.dump(tgt, f, ensure_ascii=False, indent=4)

Obter o nome do arquivo sem a extensão

import os

print(os.path.splitext("/path/to/some/file.txt")[0])

imprimirá:

/path/to/some/file