Lectura de objetos similares a archivos de Python desde C | Python

Escribir código de extensión C que consume datos de cualquier objeto similar a un archivo de Python (por ejemplo, archivos normales, objetos StringIO, etc.). read()El método debe invocarse repetidamente para consumir datos en un objeto similar a un archivo y tomar medidas para decodificar correctamente los datos resultantes. A continuación se muestra una función de … Continue reading «Lectura de objetos similares a archivos de Python desde C | Python»

Llamar a Python desde C | Serie 1

En este artículo, nos centraremos principalmente en la ejecución segura de Python invocable desde C, devolviendo un resultado a C y escribiendo código C que necesita acceder a una función de Python como devolución de llamada. El siguiente código se enfoca en las partes complicadas involucradas en llamar a Python desde C. Código n.º 1: … Continue reading «Llamar a Python desde C | Serie 1»

Python unittest: ¿cómo simular una función de rastreador web?

Requisito previo: Python | Parcheo de objetos de prueba unitaria La prueba unitaria es el primer nivel de prueba de software donde se prueban las partes más pequeñas del software que se pueden probar. Esto se utiliza para validar que cada unidad del software funcione según lo diseñado. El marco Unittest es el marco de … Continue reading «Python unittest: ¿cómo simular una función de rastreador web?»

Python | Strings C de codificación dudosa | Serie 1

Uno puede convertir strings entre C y Python viceversa, pero la codificación C es de naturaleza dudosa o desconocida. Supongamos que se supone que un dato C dado es UTF-8, pero no se aplica estrictamente. Por lo tanto, es importante manejar este tipo de datos mal formados para que no bloquee Python ni destruya los … Continue reading «Python | Strings C de codificación dudosa | Serie 1»

Pasar strings terminadas en NULL a bibliotecas C

Si uno quiere un módulo de extensión que necesita pasar una string terminada en NULL a una biblioteca C. Veamos cómo hacerlo con la implementación de strings Unicode de Python. Las bibliotecas C tienen muchas funciones que operan en strings terminadas en NULL declaradas como type char *. El código que se proporciona a continuación … Continue reading «Pasar strings terminadas en NULL a bibliotecas C»

Python | Aceptar entrada de script

Mucha gente usa Python como reemplazo de los scripts de shell, usándolo para automatizar tareas comunes del sistema, como manipular archivos, configurar sistemas, etc. Este artículo tiene como objetivo describir la aceptación de la entrada de secuencias de comandos a través de la redirección, canalizaciones o archivos de entrada. Problema: tener un script para poder … Continue reading «Python | Aceptar entrada de script»

Strings Unicode que pasan a bibliotecas C

Dado que uno quiere escribir un módulo de extensión que necesita pasar una string de Python a la función de biblioteca C. Entonces, surge la pregunta de manejar correctamente Unicode. Entonces, uno de los principales problemas que surgen es que las bibliotecas C existentes no entenderán la representación nativa de Unicode de Python. Por lo … Continue reading «Strings Unicode que pasan a bibliotecas C»

Llamar a Python desde C | conjunto 2

Requisito previo: llamar a Python desde C | Serie 1 Se debe pasar una referencia a un Python invocable existente para usar esta función. Para hacerlo, hay muchas maneras, como simplemente escribir código C para extraer un símbolo de un módulo existente o pasar un objeto invocable a un módulo de extensión. Código n.º 1: … Continue reading «Llamar a Python desde C | conjunto 2»

Operaciones de arrays de alto rendimiento con Cython | Serie 1

Aunque las bibliotecas como NumPy pueden realizar funciones de procesamiento de arrays de alto rendimiento para operar en arrays. Pero Cython también puede funcionar muy bien. Pero cómo ? Código # 1: Función Cython para recortar los valores en una array 1D simple de dobles # work.pyx (Cython file) cimport cython    @cython.boundscheck(False) @cython.wraparound(False)    … Continue reading «Operaciones de arrays de alto rendimiento con Cython | Serie 1»

Python | Consumir un iterable y diagnosticar fallas en C

El artículo tiene como objetivo escribir código de extensión C que consuma elementos de cualquier objeto iterable, como una lista, una tupla, un archivo o un generador. Código # 1: función de extensión C que muestra cómo consumir los elementos en un iterable. static PyObject* py_consume_iterable(     PyObject* self, PyObject* args) {     PyObject* obj;     PyObject* iter; … Continue reading «Python | Consumir un iterable y diagnosticar fallas en C»