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)¶
- 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, incluant- ContentFileet- 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(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- filedes 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- modeautorise 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 ;- 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:.
 - 
__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_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)¶
- Renvoie - Truesi 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, - Fileexpose les attributs et méthodes suivants de son objet- file:- encoding,- fileno,- flush,- isatty,- newlines,- read,- readinto,- readline,- readlines,- seek,- tell,- truncate,- write,- writelines,- readable(),- writable()et- seekable().
- 
La classe ContentFile¶
- 
class ContentFile(content, name=None)¶
- La classe - ContentFilehé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 :- 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)¶
- 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 de- 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 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 - savevaut- 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 - contentdoit être soit une instance de- File, soit une sous-classe de- File, comme par exemple- ContentFile.
- 
File.delete(save=True)¶
- Enlève le fichier de l’instance de modèle et supprime le fichier concerné. Si - savevaut- True, la méthode- save()du modèle sera appelée après la suppression du fichier.
 
          