Article
Lorenzo Scalese · Juil 25 2m de lecture

Un exemple pratique d'utilisation de Python avec ObjectScript

J'aimerais partager avec vous un exemple de la manière dont la nouvelle fonctionnalité d'Embedded Python d'IRIS m'a aidé dans mes tâches quotidiennes.

Dans le cadre de ma participation au projet iris-kaggle-socrata-generator avec Henrique Dias, j'ai dû dézipper des jeux de données de Kaggle afin de les importer.

Une telle tâche a été facilement réalisée en utilisant la librairie de zipfile en Python (ce code a été copié à partir de 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
}

Notez le modificateur de méthode [Language = python]. Cette fonctionnalité a été testée dans l'image IRIS intersystemsdc/iris-ml-community:2021.2.0.617.0-zpm. Consultez l'application OEX correspondante pour un exemple fonctionnel.

Vous pouvez voir qu'il s'agit d'un code Embedded Python dans une méthode ObjectScript. Vous pouvez donc l'utiliser dans tout code ObjectScript. Par exemple :

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("Il y a plus d'un fichier dans le fichier zip. J'utilise le premier.")
    }
    …
    Return retorno
}

Vous pouvez également accéder au code complet ici.

Notez que la méthode Embedded Python utilise la librairie Python zipfile et renvoie les résultats de la méthode dans un %DynamicArray, utilisé dans les méthodes ObjectScript. Cela signifie qu'un objet créé dans un contexte Python peut être accédé par un contexte ObjectScript de manière transparente.

Vous pouvez en savoir plus sur la façon d'utiliser Embedded Python ici.

Et voilà, c'est tout ! J'espère que cela pourra vous être utile pour vos projets.
A bientôt !

1
0 7
Discussion (0)3
Connectez-vous ou inscrivez-vous pour continuer