> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK Python pour App Storage

> Découvrez comment utiliser le SDK Python officiel pour gérer des fichiers dans Replit App Storage.

Ce guide de référence explique la classe `Client` du package `replit-object-storage-python` et fournit des exemples de code pour ses méthodes de classe.

## Client

La classe `Client` gère les interactions avec Replit App Storage. Cette classe propose des méthodes pour effectuer des opérations sur des objets dans un bucket.

Pour importer la classe depuis le package `replit.object_storage`, ajoutez la ligne suivante à votre code Python :

```python theme={null}
from replit.object_storage import Client
```

Utilisez le code suivant pour créer une instance de `Client` qui interagit avec Replit App Storage :

```python theme={null}
client = Client()
```

<Tip>
  Si votre application utilise plusieurs buckets, créez une instance de `Client` par bucket.
</Tip>

### \_\_init\_\_

La méthode `init` initialise une instance de la classe Client.

```python theme={null}
def __init__(bucket_id: Optional[str] = None)
```

**Argument** :

* `bucket_id` (Optional\[str]) : L'identifiant du bucket géré par le client. Lorsqu'il est omis, le Client utilise le bucket par défaut associé à l'application Replit ou au déploiement.

### copy

La méthode `copy` copie un objet dans le même bucket. Si un objet existe au même emplacement, il écrase l'original.

```python theme={null}
def copy(object_name: str, dest_object_name: str) -> None
```

**Arguments** :

* `object_name` (str) - Le chemin complet de l'objet source.
* `dest_object_name` (str) - Le chemin complet de la destination de l'objet.

**Lève** :

* `ObjectNotFoundError` - Indique que l'objet source n'existe pas au chemin spécifié.

### delete

La méthode `delete` supprime définitivement un fichier d'App Storage.

```python theme={null}
def delete(object_name: str, ignore_not_found: bool = False) -> None
```

**Arguments** :

* `object_name` (str) - Le nom de l'objet à supprimer.
* `ignore_not_found` (bool) - Lorsque `True`, supprime l'erreur si l'objet n'existe pas.

**Lève** :

* `ObjectNotFoundError` - Indique que l'objet n'existe pas.

### download\_as\_bytes

La méthode `download_as_bytes` récupère le contenu d'un fichier sous forme d'octets (`bytes`).

```python theme={null}
def download_as_bytes(object_name: str) -> bytes
```

**Argument** :

* `object_name` (str) - Le nom de l'objet à télécharger.

**Retourne** :

* `bytes` - La représentation en octets bruts du contenu de l'objet.

**Lève** :

* `ObjectNotFoundError` - Indique que l'objet n'existe pas.

### download\_as\_text

La méthode `download_as_text` télécharge le contenu d'un fichier sous forme de type `str`.

```python theme={null}
def download_as_text(object_name: str) -> str
```

**Argument** :

* `object_name` (str) - Le nom de l'objet source à récupérer.

**Retourne** :

* str : Le contenu de l'objet sous forme de chaîne encodée en UTF-8.

**Lève** :

* `ObjectNotFoundError` - Indique que l'objet n'existe pas.

### download\_to\_filename

Télécharge le contenu d'un objet dans un fichier sur le disque local.

```python theme={null}
def download_to_filename(object_name: str, dest_filename: str) -> None
```

**Arguments** :

* `object_name` (str) - Le nom de l'objet source dans App Storage à récupérer.
* `dest_filename` (str) - Le nom du fichier de destination sur le disque local.

**Lève** :

* `ObjectNotFoundError` - Indique que l'objet n'existe pas.

### exists

La méthode `exists` vérifie si un objet existe.

```python theme={null}
def exists(object_name: str) -> bool
```

**Argument** :

* `object_name` (str) - Le nom de l'objet dont on vérifie l'existence.

**Retourne** :

* `bool` : `True` si l'objet existe, `False` sinon.

### list

La méthode `list` liste les objets dans le bucket.

```python theme={null}
def list(end_offset: Optional[str] = None,
         match_glob: Optional[str] = None,
         max_results: Optional[int] = None,
         prefix: Optional[str] = None,
         start_offset: Optional[str] = None) -> List[Object]
```

**Arguments** :

* `end_offset` (Optional\[str]) - Filtre les résultats aux objets nommés lexicographiquement avant `end_offset`. Si `start_offset` est défini, les objets listés ont des noms compris entre `start_offset` (inclus) et `end_offset` (exclus).
* `match_glob` (Optional\[str]) - Utilise un pattern glob pour filtrer les résultats. Par exemple : "foo\*bar" correspond à "footbar", "foo baz bar" et "foobar".
* `max_results` (Optional\[int]) - Le nombre maximum de résultats à retourner dans la réponse.
* `prefix` (Optional\[str]) - Filtre les résultats aux objets dont les noms ont le préfixe spécifié.
* `start_offset` (Optional\[str]) - Filtre les résultats aux objets dont les noms sont lexicographiquement égaux ou supérieurs à `start_offset`. Lorsque `end_offset` est défini, les objets listés ont des noms compris entre `start_offset` (inclus) et `end_offset` (exclus).

**Retourne** :

* `List`(Object) : Une liste d'objets correspondant aux paramètres de requête donnés.

### upload\_from\_filename

Utilisez `upload_from_filename()` pour envoyer un objet depuis un fichier source sur le disque local vers App Storage.

```python theme={null}
def upload_from_filename(dest_object_name: str, src_filename: str) -> None
```

**Arguments** :

* `dest_object_name` (str) - Le nom du fichier envoyé.
* `src_filename` (str) - Le fichier source à envoyer.

### upload\_from\_bytes

La méthode `upload_from_bytes` envoie un objet à partir de données `bytes`.

```python theme={null}
def upload_from_bytes(dest_object_name: str, src_data: bytes) -> None
```

**Arguments** :

* `dest_object_name` (str) - Le nom de l'objet à envoyer.
* `src_data` (str) - Les données `bytes` à envoyer.

### upload\_from\_text

La méthode `upload_from_text` envoie un objet à partir d'une chaîne de caractères.

```python theme={null}
def upload_from_text(dest_object_name: str, src_data: Union[bytes, str]) -> None
```

**Arguments** :

* `dest_object_name` (str) - Le nom de l'objet à envoyer.
* `src_data` (str) - Les données textuelles à envoyer.

### Types d'exceptions

* Lors des interactions avec Replit App Storage à l'aide du `Client`, toute méthode peut retourner l'une des erreurs suivantes :

  * `BucketNotFoundError` : Indique que le nom de bucket configuré ne correspond à aucun bucket dans App Storage.

  * `DefaultBucketError` : Indique une configuration de bucket par défaut manquante.

  * `ForbiddenError` : Indique des autorisations insuffisantes pour accéder au bucket.

  * `TooManyRequestsError` : Indique que l'opération est limitée en débit en raison d'un trop grand nombre de requêtes.

  * `UnauthorizedError` : Indique que l'autorisation a restreint l'accès à l'opération.

## Exemples de méthodes de classe

Les sections suivantes fournissent des exemples de code pour gérer vos objets à l'aide du SDK Replit App Storage.

### Récupérer un fichier sous forme de texte

```python theme={null}
client.download_as_text("file.json")
```

### Récupérer les octets bruts d'un fichier

```python theme={null}
client.download_as_bytes("file.png")
```

### Télécharger un fichier vers le système de fichiers local

```python theme={null}
client.download_to_filename("file.json", dest_filename)
```

### Lister les objets dans le bucket

```python theme={null}
client.list()
```

### Envoyer un fichier à partir de texte

```python theme={null}
client.upload_from_text("file.json", data)
```

### Envoyer un fichier sous forme d'octets

```python theme={null}
client.upload_from_bytes("file.png", data)
```

### Envoyer des objets depuis le système de fichiers

```python theme={null}
client.upload_from_filename("file.json", src_filename)
```

### Supprimer un objet du bucket

```python theme={null}
client.delete("file.json")
```
