Hoja de referencia de Python

Fragmentos de código de Python frecuentemente necesarios

Índice

A veces necesito esto pero no puedo encontrarlo de inmediato.
Así que los mantengo todos aquí.

No son algo nuevo,
solo una serie de copias y pegados,
pero funcionan para mí,
y espero que también te sean útiles.

Awesome Python in 3d

Comandos comunes de Anaconda

Verificar si Conda está instalado

conda -V

Verificar si Conda está actualizado

conda update conda

Crear un entorno virtual

conda create -n newenvname python=3.12 anaconda

Activar tu entorno virtual

source activate newenvname

Instalar paquetes adicionales de Python en un entorno virtual

conda install -n newenvname [package]

Desactivar tu entorno virtual

source deactivate

Eliminar el entorno virtual

conda remove -n newenvname --all

Dependencias del programa

Instalar dependencias - Usando un archivo de requisitos

En lugar de instalar paquetes individualmente, pip permite declarar todas las dependencias en un Archivo de Requisitos. Por ejemplo, podrías crear un archivo requirements.txt que contenga:

requests==2.18.4
google-auth==1.1.0

Y le dirías a pip que instale todos los paquetes en este archivo usando la bandera -r:

python3 -m pip install -r requirements.txt

Congelar dependencias

Pip puede exportar una lista de todos los paquetes instalados y sus versiones usando el comando freeze:

python3 -m pip freeze

producirá algo como

requests==2.18.4
google-auth==1.1.0

El comando pip freeze es útil para crear Archivos de Requisitos que puedan recrear exactamente las versiones de todos los paquetes instalados en un entorno.

Dibujar un rectángulo

import cv2

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

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

para agregar las preguntas siguientes:

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

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

Tengo un objeto de imagen PIL y quiero dibujar un rectángulo en esta imagen. Quiero usar opencv2 y dibujar un rectángulo, y luego convertirlo de nuevo a un objeto PIL Image. Así lo hago:

# im es un objeto de imagen PIL
im_arr = np.asarray(im)
# convertir array rgb a formato bgr de opencv
im_arr_bgr = cv2.cvtColor(im_arr, cv2.COLOR_RGB2BGR)
# pts1 y pts2 son las coordenadas superior izquierda y inferior derecha del rectángulo
cv2.rectangle(im_arr_bgr, pts1, pts2,
              color=(0, 255, 0), thickness=3)
im_arr = cv2.cvtColor(im_arr_bgr, cv2.COLOR_BGR2RGB)
# convertir de nuevo a objeto Image
im = Image.fromarray(im_arr)

Parseo de argumentos fácil

import json

#---------------------------------------------------------------------------
def do_some_awesomeness(src_file, tgt_file):
    print('Convirtiendo algunas cosas de {} a {}'.format(src_file, tgt_file))

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

    parser = argparse.ArgumentParser(description="Algunas herramientas mega útiles y eficientes de Python.")
    parser.add_argument("-s", "--src", dest="src_file",
        help="nombre del archivo json de entrada")
    parser.add_argument("-t", "--tgt", dest="tgt_file",
        help="nombre del archivo json de salida")
    
    args = parser.parse_args()

    do_some_awesomeness(args.src_file, args.tgt_file)

if __name__ == '__main__':
    run()

Luego llámalo así:

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

Cargar y guardar 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)

Obtener el nombre del archivo sin extensión

import os

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

imprimirá:

/path/to/some/file

Enlaces útiles