> For the complete documentation index, see [llms.txt](https://cleyrop.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cleyrop.gitbook.io/docs/projet-data-and-ia/donnees-de-travail-fichiers/utiliser-les-donnees-dans-un-script.md).

# Utiliser les données dans un script

Les données de travail d’un projet Cleyrop peuvent être manipulées de deux manières principales selon votre contexte d’usage :

* Depuis un Dataflow — pour consommer, transformer ou enrichir des fichiers dans un flux de traitement automatisé.
* Depuis un Notebook (Codelab) — pour explorer, tester ou analyser manuellement les données stockées dans le bucket du projet.

Pour utiliser les Données de travail, vous pouvez utiliser la librairie `cleyrop.connectors` et l'objet `CleyropS3` présent dans les transformations python.

La librairie est incluse par défaut dans les **Clusters Python** et **Pyspark**.

{% hint style="warning" %}

* Pour l'utiliser dans une transformation d'un **Dataflow** vous devait préalablement initialiser le client
* Dans un Codelab, vous n'avez pas besoin de faire cette commande vous pouvez directement utiliser `cleyrop_s3` comme client s3
  {% endhint %}

### Initialisation du client S3

#### Dans un Dataflow

Vous devez explicitement créer un client CleyropS3 :

```python
from cleyrop.connectors import CleyropS3

client = CleyropS3()
```

#### Dans un Notebook (Codelab)

Un client est déjà disponible sous le nom **`cleyrop_s3`**.

Dans les exemples ci-dessous, vous pouvez donc remplacer :

```python
client = CleyropS3()
```

par

```python
client = cleyrop_s3
```

### Synthèse des méthodes publiques CleyropS3

<table data-full-width="true"><thead><tr><th width="126.60546875">Méthode</th><th width="202.8125">Description</th><th width="421.3125">Paramètres attendus</th><th>Type de retour</th></tr></thead><tbody><tr><td><code>discover</code></td><td>Lister les fichiers d’un dossier</td><td><code>{"key": "path_dossier"}</code></td><td>DataFrame Pandas</td></tr><tr><td><code>read_bytes</code></td><td>Lire un fichier binaire</td><td><code>{"path": "path_fichier"}</code></td><td><code>bytes</code></td></tr><tr><td><code>get_df</code></td><td>Charger un fichier tabulaire</td><td><code>{"key": "path_fichier"}</code> (+ <code>sheet_name</code>)</td><td>DataFrame Pandas</td></tr><tr><td><code>write_bytes</code></td><td>Écrire un fichier</td><td><code>{"path": "...", "body": bytes}</code></td><td><code>None</code></td></tr><tr><td><code>move</code></td><td>Déplacer un fichier</td><td><code>{"source_key": "...", "destination_key": "..."}</code></td><td><code>None</code></td></tr><tr><td><code>delete</code></td><td>Supprimer un fichier</td><td><code>{"key": "path_fichier"}</code></td><td><code>None</code></td></tr></tbody></table>

## Lire un fichier

La méthode `read_bytes` permet de lire le contenu binaire brut d’un fichier stocké dans les Données de Travail (PDF, image, Excel, etc.) : elle renvoie directement les bytes du fichier.

#### Paramètres

* Paramètre attendu : `path` (chemin du fichier après la racine du projet)
* Type de retour : `bytes`

{% hint style="info" %}
**Exemple** Projet Analyse CA, fichier commande.csv dans sous-dossier 2019 dans le dossier Consolidation. Le chemin complet est projet-ca/consolidation/2019

Le path\_file est consolidation/2019/commande.csv
{% endhint %}

**Exemple : lecture d’un fichier PDF**

{% code title="Dataflow example : read pdf file" %}

```python
from cleyrop.connectors import CleyropS3

client = CleyropS3()

pdf_bytes = client.read_bytes({
    "path": "path_file"
})
```

{% endcode %}

## Lister les fichiers d'un dossier

Dans un Dataflow ou un notebook du projet, vous pouvez lister les fichiers dans un dossier des Données de Travail.

Renseignez le **path\_dossier** : chemin du dossier à explorer après la racine. Le dataset en sortie sera un dataframe pandas.

{% hint style="info" %}
**Exemple** Projet Analyse CA, sous-dossier 2019 dans le dossier Consolidation. Le chemin complet est projet-ca/consolidation/2019

Le path\_dossier est consolidation/2019
{% endhint %}

```python
# Reading files from Cleyrop "Espace de Travail"
from cleyrop.connectors import CleyropS3

# Create a CleyropS3 client
client = CleyropS3()

# List all files in a bucket
discover_params = {
    'key': 'path_dossier'
}
client.discover(discover_params)
```

## Créer un fichier

Créer un fichier csv à partir d'un dataframe Polars, Pyspark ou Pandas dans un dossier de l'espace de travail.

Renseignez le **path\_new\_file** = chemin vers le fichier à créer après la racine

{% hint style="info" %}
**Exemple** Projet Analyse CA, dichier à créer dans le dossier Consolidation.

Le path\_new\_file est consolidation/new\_file.csv
{% endhint %}

```python
from cleyrop.connectors import CleyropS3
import io
import polars as pl

df = cleyrop_datasets["project.datasetname"].collect()

# Create a CleyropS3 client
client = CleyropS3()

# Serialize to CSV (in-memory string → bytes)from cleyrop.connectors import CleyropS3
csv_bytes = df.write_csv().encode("utf-8")

client.write_bytes({
    "path": "path_new_file",  
    "body": csv_bytes
})
```

## Déplacer un fichier

Dans un Dataflow ou un notebook du projet, vous pouvez déplacer un fichier des Données de Travail.

Renseignez le **origin\_path\_file** et le **target\_path\_file** = chemins (après la racine) d'origine et cible du fichier à déplacer

{% hint style="info" %}
**Exemple** Projet Analyse CA, fichier commande.csv dans sous-dossier 2019 dans le dossier Consolidation.

Le origin\_path\_file est consolidation/2019/commande.csv

Le target\_path\_file est consolidation/2018/commande.csv
{% endhint %}

```python
# Reading files from Cleyrop "Espace de Travail"
from cleyrop.connectors import CleyropS3

# Create a CleyropS3 client
client = CleyropS3()

# Move a file from one location to another
move_params = {
    'source_key': 'origin_path_file',
    'destination_key': 'target_path_file'
}
client.move(move_params)
```

## Supprimer un fichier

Dans un Dataflow ou un notebook du projet, vous pouvez déplacer un fichier des Données de Travail.

Renseignez le **path\_file** = chemin du fichier à supprimer après la racine

{% hint style="danger" %}
La suppression est définitive.
{% endhint %}

{% hint style="info" %}
**Exemple** Projet Analyse CA, fichier commande.csv dans sous-dossier 2019 dans le dossier Consolidation. Le chemin complet est projet-ca/consolidation/2019

Le path\_file est consolidation/2019/commande.csv
{% endhint %}

```python
# Reading files from Cleyrop "Espace de Travail"
from cleyrop.connectors import CleyropS3

# Create a CleyropS3 client
client = CleyropS3()

# Delete a file 
delete_params = {'key': 'path_file'}
client.delete(delete_params)
```

## Créer un dataset à partir d'un fichier

Dans un **Dataflow**, vous pouvez créer un **dataframe Pandas** à partir d'un fichier csv ou excel stocké dans les Données de Travail.

Renseignez le **path\_file** = chemin vers le fichier à traiter après la racine

{% hint style="info" %}
**Exemple** Projet Analyse CA, fichier commande.csv dans sous-dossier 2019 dans le dossier Consolidation. Le chemin complet est projet-ca/consolidation/2019

Le path\_file est consolidation/2019/commande.csv
{% endhint %}

```python
# Reading files from Cleyrop "Espace de Travail"
from cleyrop.connectors import CleyropS3
# Create a CleyropS3 client
client = CleyropS3()

# Get Dataframe from a file
read_params = {'key': 'path_file'}
df = client.get_df(read_params)

return df
```

**Pour un fichier excel**

```python
# Reading files from Cleyrop "Espace de Travail"
from cleyrop.connectors import CleyropS3

# Create a CleyropS3 client
client = CleyropS3()

# Get Dataframe from a file
file_params = {'key': 'path_file'}
excel_file = client.file(file_params)

# Get sheetnames from an excel file
sheets = pd.ExcelFile(excel_file).sheet_names

df = client.get_df(file_params, sheet_name='sheet_name')
#df = client.get_df(file_params) first sheet by default

return df
```

{% hint style="info" %}

### Pour un Dataflow Spark

Transformez le dataframe pandas en dataframe pyspark

\
import pyspark.pandas as ps

df = ps.from\_pandas(df)
{% endhint %}
