---
title: "L’objet File"
version: 1.11
locale: fr
source: https://docs.djangoproject.com/fr/1.11/ref/files/file/
canonical: https://djangodocs.dev/fr/1.11/ref/files/file/
---
# L’objet `File`

Le module [`django.core.files`](/fr/1.11/ref/files/#module-django.core.files) et ses sous-modules contiennent les classes intégrées pour la gestion de base des fichiers dans Django.

## La classe `File`

#### `class File(file_object)`

La classe [`File`](#django.core.files.File) est une enveloppe légère autour d’un objet fichier de Python, doté de quelques ajouts spécifiques à Django. En interne, Django utilise cette classe lorsqu’il a besoin de représenter un fichier.

Les objets [`File`](#django.core.files.File) possèdent les attributs et méthodes suivants :

#### `name`

Le nom du fichier, comprenant le chemin relatif du réglage [`MEDIA_ROOT`](/fr/1.11/ref/settings/#std-setting-MEDIA_ROOT).

#### `size`

La taille du fichier en octets.

#### `file`

L”objet fichier que cette classe enveloppe.

> **Soyez prudent avec cet attribut dans les sous-classes.**
>
> Certaines sous-classes de [`File`](#django.core.files.File), incluant [`ContentFile`](#django.core.files.base.ContentFile) et [`FieldFile`](/fr/1.11/ref/models/fields/#django.db.models.fields.files.FieldFile), peuvent remplacer cet attribut par un objet autre qu’un objet fichier Python. Dans ces cas, cet attribut peut être lui-même une sous-classe de [`File`](#django.core.files.File) (et par nécessairement la même sous-classe). Autant que possible, utilisez les attributs et méthodes de la sous-classe elle-même plutôt que ceux de l’attribut `file` des sous-classes.

#### `mode`

Le mode lecture/écriture du fichier.

#### `open(mode=None)`

Ouvre ou réouvre le fichier (et réinitialise son pointeur par `File.seek(0)`). Le paramètre `mode` autorise les mêmes valeurs que la fonction intégrée de Python [`open()`](https://docs.python.org/3/library/functions.html#open).

Lors de la réouverture d’un fichier, `mode` écrase le mode avec lequel le fichier a été initialement ouvert ; `None` signifie que le mode initial doit être utilisé pour la réouverture.

#### `__iter__()`

Lit le fichier par itération en renvoyant les lignes une à une.

#### `chunks(chunk_size=None)`

Lit le fichier par itération en renvoyant des blocs (« chunks »)de la taille indiquée. La valeur par défaut de `chunk_size` est 64 Ko.

C’est particulièrement utile pour les gros fichiers car cela permet de les lire en flux à partir du disque en évitant de stocker la totalité du fichier en mémoire.

#### `multiple_chunks(chunk_size=None)`

Renvoie `True` si la taille du fichier nécessite de le partitionner en plusieurs blocs pour le lire en entier, en fonction de la taille `chunk_size`.

#### `close()`

Ferme le fichier.

En plus des méthodes mentionnées, [`File`](#django.core.files.File) expose les attributs et méthodes suivants de son objet `file`: `encoding`, `fileno`, `flush`, `isatty`, `newlines`, `read`, `readinto`, `readline`, `readlines`, `seek`, `softspace`, `tell`, `truncate`, `write`, `writelines`, `xreadlines`, `readable()`, `writable()` et `seekable()`.

> **Changed in Django 1.11**
>
> Les méthodes `readable()` et `writable()` ont été ajoutées et la méthode `seekable()` a été rendue disponible pour Python 2.

## La classe `ContentFile`

#### `class ContentFile(File)`

La classe `ContentFile` hérite de [`File`](#django.core.files.File), mais contrairement à celle-ci, elle n’agit que sur du contenu de type chaîne (octets aussi admis), plutôt que sur un vrai fichier. Par exemple :

```
from __future__ import unicode_literals
from django.core.files.base import ContentFile

f1 = ContentFile("esta sentencia está en español")
f2 = ContentFile(b"these are bytes")
```

## La classe `ImageFile`

#### `class ImageFile(file_object)`

Django fournit une classe intégrée tout exprès pour les images. [`django.core.files.images.ImageFile`](#django.core.files.images.ImageFile) hérite de tous les attributs et méthodes de [`File`](#django.core.files.File), et offre en plus les éléments suivants :

#### `width`

Largeur de l’image en pixels.

#### `height`

Hauteur de l’image en pixels.

## Méthodes supplémentaires pour les fichiers liés à des objets

Tout fichier [`File`](#django.core.files.File) associé à un objet (comme pour `Car.photo` ci-dessous) possède également quelque méthodes supplémentaires :

#### `File.save(name, content, save=True)`

Enregistre un nouveau fichier avec le nom de fichier et le contenu indiqués. Cela ne remplacera pas le fichier existant, mais un nouveau fichier sera créé et l’objet sera mis à jour pour pointer vers ce fichier. Si `save` vaut `True`, la méthode `save()` du modèle sera appelée après l’enregistrement du fichier. C’est-à-dire que ces deux lignes :

```
>>> car.photo.save('myphoto.jpg', content, save=False)
>>> car.save()
```

sont équivalentes à :

```
>>> car.photo.save('myphoto.jpg', content, save=True)
```

Notez que le paramètre `content` doit être soit une instance de [`File`](#django.core.files.File) , soit une sous-classe de [`File`](#django.core.files.File), comme par exemple [`ContentFile`](#django.core.files.base.ContentFile).

#### `File.delete(save=True)`

Enlève le fichier de l’instance de modèle et supprime le fichier concerné. Si `save` vaut `True`, la méthode `save()` du modèle sera appelée après la suppression du fichier.
