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.
- 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:.
- 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 :
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.