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
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 :-
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
, incluantContentFile
etFieldFile
, 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’attributfile
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ètremode
autorise les mêmes valeurs que la fonction intégrée de Pythonopen()
.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.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_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 taillechunk_size
.
-
close
()¶ Ferme le fichier.
En plus des méthodes mentionnées,
File
expose 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)¶ La classe
ContentFile
hé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)¶ 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 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
save
vautTrue
, 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
content
doit ê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
save
vautTrue
, la méthodesave()
du modèle sera appelée après la suppression du fichier.