L’objet FileLien vers cette rubrique

Le 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 FileLien vers cette rubrique

class File(file_object)Lien vers cette définition

La classe 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 possèdent les attributs et méthodes suivants :

nameLien vers cette définition

Le nom du fichier, comprenant le chemin relatif du réglage MEDIA_ROOT.

sizeLien vers cette définition

La taille du fichier en octets.

fileLien vers cette définition

L”objet fichier que cette classe enveloppe.

modeLien vers cette définition

Le mode lecture/écriture du fichier.

open(mode=None)Lien vers cette définition

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().

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.

read(num_bytes=None)Lien vers cette définition

Lit du contenu dans le fichier. Le paramètre facultatif size correspond au nombre d’octets à lire ; lorsqu’il n’est pas indiqué, le fichier est lu entièrement.

__iter__()Lien vers cette définition

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

chunks(chunk_size=None)Lien vers cette définition

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)Lien vers cette définition

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.

write(content)Lien vers cette définition

Écrit le contenu textuel indiqué dans le fichier. En fonction du système de stockage utilisé, il est possible que le contenu ne soit pas réellement écrit avant que le fichier soit fermé avec close().

close()Lien vers cette définition

Ferme le fichier.

En plus des méthodes mentionnées, File expose les attributs et méthodes suivants de son objet file: encoding, fileno, flush, isatty, newlines, read, readinto, readlines, seek, softspace, tell, truncate, writelines, xreadlines. Si vous utilisez Python 3, la méthode seekable est aussi disponible.

La classe ContentFileLien vers cette rubrique

class ContentFile(File)Lien vers cette définition

La classe ContentFile hérite de 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 :

Code
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 ImageFileLien vers cette rubrique

class ImageFile(file_object)Lien vers cette définition

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

widthLien vers cette définition

Largeur de l’image en pixels.

heightLien vers cette définition

Hauteur de l’image en pixels.

Méthodes supplémentaires pour les fichiers liés à des objetsLien vers cette rubrique

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

File.save(name, content, save=True)Lien vers cette définition

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 :

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

sont équivalentes à :

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

Notez que le paramètre content doit être soit une instance de File , soit une sous-classe de File, comme par exemple ContentFile.

File.delete(save=True)Lien vers cette définition

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.