Objets fichiers¶
Ces API sont une émulation minimale de l’API C Python 2 pour les objets fichier natifs, qui reposaient sur la gestion des entrées-sorties avec tampon (FILE*
) de la bibliothèque standard C. En Python 3, les fichiers et les flux utilisent le nouveau module io
, qui définit plusieurs couches au dessus des entrées/sorties bas niveau sans tampon du système d’exploitation. Les fonctions définies ci-dessous, écrites en C, encapsulent ces nouvelles APi pour les rendre plus faciles d’utilisation et sont majoritairement pensées pour signaler des erreurs internes dans l’interpréteur ; il est conseillé au code tiers d’utiliser les API de io
à la place.
-
PyFile_FromFd
(int fd, const char *name, const char *mode, int buffering, const char *encoding, const char *errors, const char *newline, int closefd)¶ Crée un objet fichier Python à partir du descripteur d’un fichier déjà ouvert fd. Les arguments name, encoding, errors et newline peuvent être NULL pour utiliser ceux par défaut ; buffering peut être -1 pour utiliser celui par défaut ; name est ignoré et gardé pour la rétro-compatibilité. Renvoie NULL en cas d’échec. Pour une description plus détaillée des arguments, merci de vous référer à la documentation de fonction
io.open()
.Avertissement
Étant donné que les flux de données Python possèdent leur propre couche de tampon, les mélanger avec des descripteurs de fichiers du niveau du système d’exploitation peut produire des erreurs (comme par exemple un ordre des données inattendu).
Modifié dans la version 3.2: ignore l’attribut name
-
int
PyObject_AsFileDescriptor
(PyObject *p)¶ Renvoie un descripteur de fichier associé avec p comme un
int
. Si l’objet est un entier, sa valeur est renvoyée. Sinon, la méthodefileno()
de l’objet est appelée si elle existe; la méthode doit renvoyer un entier, qui est renvoyé en tant que valeur du descripteur. Affecte une exception et renvoie-1
lors d’un échec.
-
PyObject*
PyFile_GetLine
(PyObject *p, int n)¶ - Return value: New reference.
Cette fonction, équivalente à
p.readline([n])
, lit une ligne de l’objet p. p peut être un objet fichier ou n’importe quel objet qui possède une méthodereadline()
. Si n vaut0
, une seule ligne est lue, indépendamment de la taille de la ligne. Si n est plus grand que0
, un maximum de n octets seront lus en provenance du fichier ; une ligne partielle peut être renvoyée. Dans les deux cas, une chaîne de caractères vide est renvoyée si la fin du fichier est atteinte immédiatement. Cependant, si n est plus petit que0
, une ligne est lue indépendamment de sa taille, maisEOFError
est levée si la fin du fichier est atteinte immédiatement.
-
int
PyFile_WriteObject
(PyObject *obj, PyObject *p, int flags)¶ Écrit l’objet obj dans l’objet fichier p. La seule option gérée pour flags est
Py_PRINT_RAW
; si défini, l’attributstr()
de l’objet est écrit à la place de l’attributrepr()
. Retourne0
en cas de succès ou-1
en cas échec ; l’exception appropriée sera levée.