Artículo
Ricardo Paiva · Oct 20, 2022 Lectura de 2 min

Un ejemplo práctico sobre el uso de Python con ObjectScript

Me gustaría compartir un ejemplo sobre cómo la nueva funcionalidad de Python Embebido en IRIS me ha ayudado en mis rutinas diarias.

Mientras participaba en el proyecto iris-kaggle-socrata-generator con Henrique Dias, tuve que descomprimir conjuntos de datos de Kaggle para poder importarlos.

Conseguí hacerlo fácilmente mediante el uso de la librería zipfile en Python (este código se copió de este stackoverflow):

Method UnZip(pZipFileName As %String, pExtractToDir As %String) As %DynamicArray [ Language = python ]
{
    import zipfile
    import iris
    with zipfile.ZipFile(pZipFileName, 'r') as zip_ref:
        zip_ref.extractall(pExtractToDir)
        fileList = zip_ref.namelist()

    dynarray = iris.cls("%DynamicArray")._New()
    for file in fileList:
        dynarray._Push(file)
    return dynarray
}

Fijaos en el modificador del método [Language = python]. Esta funcionalidad se probó en la imagen de IRIS intersystemsdc/iris-ml-community:2021.2.0.617.0-zpm. Consultad la aplicación relacionada en Open Exchange para ver un ejemplo funcionando.

Podéis ver que es un código Python embebido en un método ObjectScript. Así que podéis usarlo en cualquier código ObjectScript. Por ejemplo:

Method HttpDownloadZIP(pHttpParams As %DynamicObject) As %DynamicObject
{
    Set retorno = {
        "warnings": []
    }
    …
    Set fileName = ..SaveRequestToFile(request)
    …
    Set fileList = ..UnZip(fileName, zipTempDir)
    If (fileList.%Size() > 1) {
        Do retorno.warnings.%Push("There is more than 1 file in the zip file. Using the first one.")
    }
    …
    Return retorno
}

También podéis acceder al código completo aquí.

Recordad que el método de Python Embebido utiliza la librería de Python zipfile y devuelve los resultados del método en un %DynamicArray, utilizado en los métodos de ObjectScript. Esto significa que un objeto creado en un contexto de Python puede ser accedido mediante un contexto de ObjectScript sin problemas.

Aquí podéis consultar más información sobre cómo utilizar Python Embebido.

¡Y eso es todo! Espero que os resulte útil para vuestros proyectos.

1
1 33
Debate (0)2
Inicie sesión o regístrese para continuar