L’objet File¶
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 File¶
-
class
File(file_object, name=None)[source]¶ La classe
Fileest 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
Filepossèdent les attributs et méthodes suivants :-
name¶ Le nom du fichier, comprenant le chemin relatif du réglage
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, incluantContentFileetFieldFile, 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 deFile(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’attributfiledes sous-classes.
-
mode¶ Le mode lecture/écriture du fichier.
-
open(mode=None, *args, **kwargs)[source]¶ Ouvre ou réouvre le fichier (et réinitialise son pointeur par
File.seek(0)). Le paramètremodeautorise les mêmes valeurs que la fonction intégrée de Pythonopen().*argset**kwargssont transmis aprèsmodeà la fonction intégréeopen()de Python.Lors de la réouverture d’un fichier,
modeécrase le mode avec lequel le fichier a été initialement ouvert ;Nonesignifie que le mode initial doit être utilisé pour la réouverture.Vous pouvez l’utiliser comme un gestionnaire de contexte, par ex.
with file.open() as f:.Changed in Django 5.0:La prise en charge de la transmission de
*argset**kwargsa été ajoutée.
-
chunks(chunk_size=None)[source]¶ Lit le fichier par itération en renvoyant des blocs (« chunks »)de la taille indiquée. La valeur par défaut de
chunk_sizeest 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)[source]¶ Renvoie
Truesi la taille du fichier nécessite de le partitionner en plusieurs blocs pour le lire en entier, en fonction de la taillechunk_size.
En plus des méthodes mentionnées,
Fileexpose les attributs et méthodes suivants de son objetfile:encoding,fileno,flush,isatty,newlines,read,readinto,readline,readlines,seek,tell,truncate,write,writelines,readable(),writable()etseekable().-
La classe ContentFile¶
-
class
ContentFile(content, name=None)[source]¶ La classe
ContentFilehérite deFile, 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 django.core.files.base import ContentFile f1 = ContentFile("esta frase está en español") f2 = ContentFile(b"these are bytes")
La classe ImageFile¶
-
class
ImageFile(file_object, name=None)[source]¶ Django fournit une classe intégrée tout exprès pour les images.
django.core.files.images.ImageFilehérite de tous les attributs et méthodes deFile, 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 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
savevautTrue, la méthodesave()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
contentdoit être soit une instance deFile, soit une sous-classe deFile, comme par exempleContentFile.
-
File.delete(save=True)¶ Enlève le fichier de l’instance de modèle et supprime le fichier concerné. Si
savevautTrue, la méthodesave()du modèle sera appelée après la suppression du fichier.