AnP AnP

Menu
Content
Por KyMAN. Creado a fecha 2021/07/19. Última modificación a fecha 2021/07/26.

AnP.Common.py

Esta librería es la librería donde se encuentran todos los elementos comunes del lado Python de AnP. Aunque sea la primera librería para la importación, esto no indica que sea la librería principal, quedando como la principal AnP.py, esta librería simplemente contendrá metodos y variables comunes para la librería principal, así como estructuras comunes cortas como la creación y gestión de Hashes entre otras opciones.

Para documentar esta librería nos centraremos en las diferentes funciones o variables de las que se compone para uso global.

AnP.platform

AnP.platformPython

Método objeto que retorna la plataforma del OS sobre la que trabaja (UNIX o DOS).

strAnP.platformreturnstrPlataforma de trabajo
returnstrPlataforma de trabajo
  • nameAnP.platform
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic

AnP.is_dos

AnP.is_dosPython

Método objeto que verifica si está trabajando en DOS o no.

boolAnP.is_dosreturnboolVerifica si está trabajando en DOS.
returnboolVerifica si está trabajando en DOS.
  • nameAnP.is_dos
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic

AnP.is_unix

AnP.is_unixPython

Método objeto que verifica si está trabajando en UNIX o no.

boolAnP.is_unixreturnboolVerifica si está trabajando en UNIX.
returnboolVerifica si está trabajando en UNIX.
  • nameAnP.is_unix
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic

AnP.python2

AnP.python2Python

Método estático que verifica si se está ejecutando en Python 2 o no.

boolAnP.python2returnboolVerifica si está en Python 2 o no.
returnboolVerifica si está en Python 2 o no.
  • nameAnP.python2
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si se está ejecutando en Python 2 o no.

AnP.python3

AnP.python3Python

Método estático que verifica si se está ejecutando en Python 3 o no.

boolAnP.python3returnboolVerifica si está en Python 3 o no.
returnboolVerifica si está en Python 3 o no.
  • nameAnP.python3
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si se está ejecutando en Python 3 o no.

AnP.is_bool

AnP.is_boolPython

Método estático que verifica si una variable es un valor Booleano o no.

boolAnP.is_boolvalueANYrequiredVariable a analizar.returnboolVerifica si es un valor Booleano o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es un valor Booleano o no.
  • nameAnP.is_bool
  • languagePython
  • authorKyMAN
  • seeAnP.python2
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es de tipo Booleana o no.

                    
  • Language py
  • Lines 6
  • Characters 204
print("YES" if AnP.is_bool(0) else "NO") # NO print("YES" if AnP.is_bool(True) else "NO") # YES print("YES" if AnP.is_bool(False) else "NO") # YES print("YES" if AnP.is_bool("True") else "NO") # NO

AnP.is_array

AnP.is_arrayPython

Método estático que verifica si una variable es un Array o no.

boolAnP.is_arrayvalueANYrequiredVariable a analizar.returnboolVerifica si es un Array o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es un Array o no.
  • nameAnP.is_array
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es un Array o no. Para validar si es un Array o no en Python, puesto que este lenguaje no posee como tal un tipado concreto para éste, se verifica si es de tipo lista (list) o tupla (tuple), siendo la diferencia entre ambas que la tupla es un vector rígido y la lista un vector dinámico.

                    
  • Language py
  • Lines 6
  • Characters 207
print("YES" if AnP.is_array(0) else "NO") # NO print("YES" if AnP.is_array([]) else "NO") # YES print("YES" if AnP.is_array((0,)) else "NO") # YES print("YES" if AnP.is_array(("jojo")) else "NO") # NO

AnP.is_list

AnP.is_listPython

Método estático que verifica si una variable es una lista o no.

boolAnP.is_listvalueANYrequiredVariable a analizar.returnboolVerifica si es una lista o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es una lista o no.
  • nameAnP.is_list
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es una lista o no.

                    
  • Language py
  • Lines 6
  • Characters 206
print("YES" if AnP.is_array(0) else "NO") # NO print("YES" if AnP.is_array([]) else "NO") # YES print("YES" if AnP.is_array((0,)) else "NO") # NO print("YES" if AnP.is_array(("jojo")) else "NO") # NO

AnP.is_tuple

AnP.is_tuplePython

Método estático que verifica si una variable es una tupla o no.

boolAnP.is_tuplevalueANYrequiredVariable a analizar.returnboolVerifica si es una tupla o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es una tupla o no.
  • nameAnP.is_tuple
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es una tupla o no.

                    
  • Language py
  • Lines 6
  • Characters 206
print("YES" if AnP.is_array(0) else "NO") # NO print("YES" if AnP.is_array([]) else "NO") # NO print("YES" if AnP.is_array((0,)) else "NO") # YES print("YES" if AnP.is_array(("jojo")) else "NO") # NO

AnP.is_dictionary

AnP.is_dictionaryPython

Método estático que verifica si una variable es un diccionario o no.

boolAnP.is_dictionaryvalueANYrequiredVariable a analizar.returnboolVerifica si es un diccionario o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es un diccionario o no.
  • nameAnP.is_dictionary
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es un diccionario o no.

                    
  • Language py
  • Lines 6
  • Characters 200
print("YES" if AnP.is_array(0) else "NO") # NO print("YES" if AnP.is_array([]) else "NO") # NO print("YES" if AnP.is_array((0,)) else "NO") # NO print("YES" if AnP.is_array({}) else "NO") # YES

AnP.is_string

AnP.is_stringPython

Método estático que verifica si una variable es un String o no.

boolAnP.is_stringvalueANYrequiredVariable a analizar.returnboolVerifica si es un String o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es un String o no.
  • nameAnP.is_string
  • languagePython
  • authorKyMAN
  • seeAnP.python2
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es un string o no.

                    
  • Language py
  • Lines 6
  • Characters 198
print("YES" if AnP.is_array(0) else "NO") # NO print("YES" if AnP.is_array([]) else "NO") # NO print("YES" if AnP.is_array("") else "NO") # YES print("YES" if AnP.is_array({}) else "NO") # NO

AnP.is_function

AnP.is_functionPython

Método estático que verifica si una variable es una función o no.

boolAnP.is_functionvalueANYrequiredVariable a analizar.returnboolVerifica si es una función o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es una función o no.
  • nameAnP.is_function
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es una función o no.

                    
  • Language py
  • Lines 9
  • Characters 232
def test(): pass print("YES" if AnP.is_array(0) else "NO") # NO print("YES" if AnP.is_array(lambda:0) else "NO") # YES print("YES" if AnP.is_array(test) else "NO") # YES print("YES" if AnP.is_array({}) else "NO") # NO

AnP.is_number

AnP.is_numberPython

Método estático que verifica si una variable es un valor numérico o no.

boolAnP.is_numbervalueANYrequiredVariable a analizar.returnboolVerifica si es un número o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es un número o no.
  • nameAnP.is_number
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es un número o no.

                    
  • Language py
  • Lines 7
  • Characters 253
print("YES" if AnP.is_array(0) else "NO") # YES print("YES" if AnP.is_array("1") else "NO") # NO print("YES" if AnP.is_array(.8) else "NO") # YES print("YES" if AnP.is_array(-6.23) else "NO") # YES print("YES" if AnP.is_array({}) else "NO") # NO

AnP.is_integer

AnP.is_integerPython

Método estático que verifica si una variable es un valor numérico entero o no.

boolAnP.is_integervalueANYrequiredVariable a analizar.returnboolVerifica si es un valor entero o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es un valor entero o no.
  • nameAnP.is_integer
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es un número entero o no.

                    
  • Language py
  • Lines 7
  • Characters 251
print("YES" if AnP.is_array(0) else "NO") # YES print("YES" if AnP.is_array("1") else "NO") # NO print("YES" if AnP.is_array(.8) else "NO") # NO print("YES" if AnP.is_array(-6.23) else "NO") # NO print("YES" if AnP.is_array({}) else "NO") # NO

AnP.is_datetime

AnP.is_datetimePython

Método estático que verifica si una variable es una fecha y/o hora o no.

boolAnP.is_datetimevalueANYrequiredVariable a analizar.returnboolVerifica si es una fecha y/o hora o no.
valueANYrequiredVariable a analizar.returnboolVerifica si es una fecha y/o hora o no.
  • nameAnP.is_datetime
  • languagePython
  • authorKyMAN
  • since20210722
  • version20210722
  • accesspublic

Método estático que retorna un valor Booleano que verifica si la variable enviada es un objeto de tipo fecha y/o hora o no.

AnP.if_none

AnP.if_nonePython

Método estático que retorna el primer valor si no es nulo, sino el segundo valor.

ANYAnP.if_nonevalueANYrequiredVariable principal.callbackANYrequiredVariable secundaria.returnANYVariable no nula o única.
valueANYrequiredVariable principal.callbackANYrequiredVariable secundaria.returnANYVariable no nula o única.
  • nameAnP.if_none
  • languagePython
  • authorKyMAN
  • seeAnP.is_function
  • since20210722
  • version20210722
  • accesspublic

Método estático al cual se le mandan dos valores donde si el primero es nulo (None) éste retornará el segundo, haciendo referencia al isnull de SQL Server y al ifnull de MySQL. Para evitar un preprocesamiento inútil se permite que el segundo parámetro sea una función, ya sea Lambda o una función predefinida y el valor devuelto en caso de que el primero sea nulo, será la respuesta a la llamada de dicha función.

AnP.string_variables

AnP.string_variablesPython

Método de clase que procesa las variables de un String.

strAnP.string_variablesstringstrrequiredString a procesar.variablesdictlisttupleoptionalVariables para procesar el String.defaultstroptionalValor por defecto.returnstrString procesado.
stringstrrequiredString a procesar.variablesdictlisttupleoptionalVariables para procesar el String.defaultstroptionalValor por defecto.returnstrString procesado.

Método estático que permite procesar variables en un String dado, entiendendo que las variables dentro del String sean nombradas estableciendo su Key entre llaves, siendo substituídos por el valor que se le determine en las variables. En caso de no encontrarse un valor en las variables, éste devolverá el valor por defecto, a no ser que éste sea nulo, que será cuando se devolverá de nuevo su estado original incluyendo las llaves. La entrada de variables puede ser nula, lo cual no haría nada; un diccionario donde vuscar el valor a la llave del String; o una lista o tupla de diccionarios con la misma finalidad.

AnP.get_directory_path

AnP.get_directory_pathPython

Método de clase que retorna el Path del directorio de un Path ya sea fichero o directorio.

strAnP.get_directory_pathpathstrrequiredPath a procesar.returnstrPath del directorio.
pathstrrequiredPath a procesar.returnstrPath del directorio.
  • nameAnP.get_directory_path
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic

AnP.make_directories

AnP.get_directory_pathPython

Método estático que crea un directorio, incluyendo los niveles del mismo.

voidAnP.get_directory_pathpathstrrequiredPath a crear como directorio.returnvoid
pathstrrequiredPath a crear como directorio.returnvoid
  • nameAnP.get_directory_path
  • languagePython
  • authorKyMAN
  • seeAnP.is_string
  • since20210726
  • version20210726
  • accesspublic
IMPORTANTE: Los permisos del mismo quedarán exclusivizados al usuario ejecutor del Python, y dará una excepción si no tiene permisos o el Path del mismo está mal sintácticamente o no pertenece a ninguna unidad.

AnP.paths_get

AnP.paths_getPython

Método objeto que retorna una lista de todos los posibles Paths absolutos de un Path relativo dado.

strAnP.paths_getpathstroptionalPath del que partir.returnstrLista de Paths.
pathstroptionalPath del que partir.returnstrLista de Paths.
  • nameAnP.paths_get
  • languagePython
  • authorKyMAN
  • seeAnP.is_string
  • since20210726
  • version20210726
  • accesspublic

La lista de Paths resultante será una lista de Paths a partir de como se estructure en la configuración a partir del siguiente orden de prioridad:

  1. Path dado.
  2. Path absoluto de la aplicación.
  3. Path relativo anterior al de la ejecución.
  4. Path relativo desde la ejecución.
  5. Paths roots dados.
    1. Paths establecidos como "root".
    2. Paths establecidos como "roots".

AnP.file_load

AnP.file_loadPython

Método objeto que carga el contenido de un fichero.

strAnP.file_loadpathstroptionalPath del que partir.returnstrContenido
pathstroptionalPath del que partir.returnstrContenido
  • nameAnP.file_load
  • languagePython
  • authorKyMAN
  • seeAnP.paths_get
  • since20210726
  • version20210726
  • accesspublic
NOTA: El contenido cargado será de caracter binario en Python 3.
IMPORTANTE: El contenido será None si no se encuentra el fichero.

AnP.json_decode

AnP.json_decodePython

Método objeto que decodifica un String en JSON.

dict,list,tupleAnP.json_decodepathstrrequiredString JSON.show_errorsbooloptionalVerifica si se imprime error o no.returndict,list,tupleJSON decodificado.
pathstrrequiredString JSON.show_errorsbooloptionalVerifica si se imprime error o no.returndict,list,tupleJSON decodificado.
IMPORTANTE: Si el formato del String no es un JSON retornará None.

AnP.json_encode

AnP.json_encodePython

Método objeto que codifica un objeto en JSON.

strAnP.json_encodeobjectstrrequiredObjeto a serializar en JSON.show_errorsbooloptionalVerifica si se imprime error o no.returnstrString JSON.
objectstrrequiredObjeto a serializar en JSON.show_errorsbooloptionalVerifica si se imprime error o no.returnstrString JSON.
  • nameAnP.json_encode
  • languagePython
  • authorKyMAN
  • seeAnP.exception
  • since20210726
  • version20210726
  • accesspublic
IMPORTANTE: Si el objeto dado no es serializable y codificable en JSON retornará None.

AnP.base64_decode

AnP.base64_decodePython

Método estático que decodifica un String en Base64.

strAnP.base64_decodedatastrrequiredString codificado.returnstrString decodificado.
datastrrequiredString codificado.returnstrString decodificado.
  • nameAnP.base64_decode
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic
IMPORTANTE: Si la codificación es errónea retornará None.

AnP.base64_encode

AnP.base64_encodePython

Método estático que codifica un String en Base64.

strAnP.base64_encodedatastrrequiredString a codificar.returnstrString codificado.
datastrrequiredString a codificar.returnstrString codificado.
  • nameAnP.base64_encode
  • languagePython
  • authorKyMAN
  • seeAnP.exception
  • since20210726
  • version20210726
  • accesspublic
IMPORTANTE: Si No es un String o da problemas su codificación, éste retornará None.

AnP.shell

AnP.shellPython

Método estático que ejecuta un comando en la Terminal o en la Consola de COMANDOS.

strAnP.shellcommandstrrequiredComando a ejecutar.returnstrRespuesta de la ejecución.
commandstrrequiredComando a ejecutar.returnstrRespuesta de la ejecución.
  • nameAnP.shell
  • languagePython
  • authorKyMAN
  • seeAnP.exception
  • since20210726
  • version20210726
  • accesspublic
IMPORTANTE: Si la ejecución da error éste retornará None.
IMPORTANTE: Solo retorna el nivel de respuesta e ignora el nivel de error e inserción de texto.

AnP.load_url

AnP.load_urlPython

Método estático que carga el contenido de una URL.

boolAnP.load_urlurlstrrequiredURL a cargar.datadictoptionalVariables a enviar por POST.cookiesstroptionalCookies.returnboolContenido del sitio Web.
urlstrrequiredURL a cargar.datadictoptionalVariables a enviar por POST.cookiesstroptionalCookies.returnboolContenido del sitio Web.
  • nameAnP.load_url
  • languagePython
  • authorKyMAN
  • seeAnP.shell
  • since20210726
  • version20210726
  • accesspublic
NOTA: Para realizar un POST sin variables ha de enviarse un diccionario vacío en el parámetro "data".
NOTA: Este método no usa ningún método interno nativo de Python como pueden ser las librerías "urllib", "urllib2", "urllib3", "request" o "socket" puesto que Python, de forma nativa, espera a la finalización del Timeout, relentizando las conexiones de la aplicación o incluso arriesgando a que la respuesta venga parcial por culpa de dicho Timeout. Para realizar dicha acción usará la Terminal o la Consola de COMANDOS, dependiendo de la plataforma en la que se encuentre, a partir de la librería nativa de Python "subprocess", y ejecutará el programa cURL para efectuar dicha acción. Es importante destacar que dicho programa viene nativo en Windows 10 en su Consola de COMANDOS, pero en Linux se requiere de instalar, lo cual puede efectuarse de la siguiente manera:
                    
  • Language sh
  • Lines 1
  • Characters 16
apt install curl

AnP.are_string

AnP.are_stringPython

Método estático que verifica si en un Array todos sus elementos son String o no.

boolAnP.are_stringdatalisttuplerequiredArray a analizar.returnboolVerifica si todos los elementos son String.
datalisttuplerequiredArray a analizar.returnboolVerifica si todos los elementos son String.

AnP.ternary

DeprecatedAnP.ternaryPython

Método estático que retorna el primer valor enviado si la condición es afirmativa, en caso contrario retornará el valor del segundo elemento dado.

ANYAnP.ternaryconditionboolrequiredCondición a analizar.trueANYrequiredRetorno afirmativo.falseANYoptionalRetorno negativo.returnANYRetorno.
conditionboolrequiredCondición a analizar.trueANYrequiredRetorno afirmativo.falseANYoptionalRetorno negativo.returnANYRetorno.
  • nameAnP.ternary
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic
  • deprecated1

AnP.timestamp

AnP.timestampPython

Método estático que retorna la fecha actual en segundos en formato Timestamp.

intAnP.timestampreturnintFecha actual en segundos.
returnintFecha actual en segundos.
  • nameAnP.timestamp
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic

AnP.timestamp_milliseconds

AnP.timestamp_millisecondsPython

Método estático que retorna la fecha actual en milisegundos en formato Timestamp.

intAnP.timestamp_millisecondsreturnintFecha actual en milisegundos.
returnintFecha actual en milisegundos.
  • nameAnP.timestamp_milliseconds
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic

AnP.now

AnP.nowPython

Método estático que retorna la fecha actual en un objeto de tipo "datetime".

datetimeAnP.nowreturndatetimeFecha actual.
returndatetimeFecha actual.
  • nameAnP.now
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic

AnP.datetime

AnP.datetimePython

Método estático que retorna la fecha actual en un objeto de tipo "datetime", o si se le da un Timestamp en segundos, éste retornará dicha fecha como objeto de tipo "datetime".

datetimeAnP.datetimedateintoptionalFecha Timestamp.returndatetimeFecha actual.
dateintoptionalFecha Timestamp.returndatetimeFecha actual.
  • nameAnP.datetime
  • languagePython
  • authorKyMAN
  • seeAnP.is_number
  • seeAnP.now
  • since20210726
  • version20210726
  • accesspublic

AnP.exception

AnP.exceptionPython

Método objeto que gestiona el almacenamiento de la excepción en las trazas de la base de datos.

voidAnP.exceptionmethodstrrequiredNombre del método del que parte la excepción.exceptionstrrequiredTraza e información de la excepción.returnvoid
methodstrrequiredNombre del método del que parte la excepción.exceptionstrrequiredTraza e información de la excepción.returnvoid
AVISO: Si la base de datos no está montada, ya sea que no hay configuración para la misma o falla cualquier punto para el montaje de la base de datos SQLite, éste no hará nada más que almacenar en memoria las excepciones mientras el programa siga activo y en cuanto detecte que existe la base de datos, éste insertará todas las excepciones en la misma, sino, dichas excepciones se perderán.

AnP.format_path

AnP.format_pathPython

Método objeto que formatea el Path según esté ejecutándose en DOS o en UNIX.

strAnP.format_pathpathstrrequiredPath a formatear.returnstrPath formateado.
pathstrrequiredPath a formatear.returnstrPath formateado.
  • nameAnP.format_path
  • languagePython
  • authorKyMAN
  • seeAnP.is_dos
  • since20210726
  • version20210726
  • accesspublic
AVISO: Si el Path apunta a una unidad, ésta se formateará en los casos de UNIX no sobre el directorio raíz, sino desde el directorio de montaje "/mnt" continuando con un subdirectorio con la letra de la unidad en minúscula siguiendo la estructura de los Subsistemas Linux.
NOTA: Si el Path ya está formateado en el sistema requerido éste no cambiará.

AnP.procedure_exists

AnP.procedure_existsPython

Método objeto que verifica si existe la librería de procedimientos almacenados a partir del nombre dado o no.

boolAnP.procedure_existsnamestrrequiredNombre de la librería de procedimientos.returnboolVerifica si existe o no.
namestrrequiredNombre de la librería de procedimientos.returnboolVerifica si existe o no.
  • nameAnP.procedure_exists
  • languagePython
  • authorKyMAN
  • since20210726
  • version20210726
  • accesspublic

AnP.procedure_get

AnP.procedure_getPython

Método objeto que retorna la librería de procedimientos.

objectAnP.procedure_getnamestrrequiredNombre de la librería de procedimientos.returnobjectLibrería de procedimientos.
namestrrequiredNombre de la librería de procedimientos.returnobjectLibrería de procedimientos.
  • nameAnP.procedure_get
  • languagePython
  • authorKyMAN
  • seeAnP.procedure_exists
  • since20210726
  • version20210726
  • accesspublic
NOTA: Si no existe retornará None.

AnP._print

AnP._printPython

Método objeto que imprime un texto.

voidAnP._print_typestrrequiredNombre de la librería de procedimientos.textstrrequiredString a imprimir.variablesdictlisttupleoptionalVariables para tratar el String de impresión.returnvoid
_typestrrequiredNombre de la librería de procedimientos.textstrrequiredString a imprimir.variablesdictlisttupleoptionalVariables para tratar el String de impresión.returnvoid
Hablar de la configuración, formato, tipados, filtro de impresión por tipados, uso de la I18N, variables, etc.
NOTA: Es un método oculto para diferenciarlo del "print" nativo de Python. Parece ser que aunque esté internamente dentro de una clase, la palabra reservada "print" da errores inesperados.
NOTA: Este método también se encarga del almacenamiento de los LOGs, entendiéndose como los elementos de impresión aquellos elementos importantes a mostrar o monitorizar por parte del usuario cliente.
Files