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éthode
   "fileno()" 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éthode "readline()". Si *n* vaut "0", une seule
   ligne est lue, indépendamment de la taille de la ligne. Si *n* est
   plus grand que "0", 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 que "0", une ligne est lue indépendamment de sa taille,
   mais "EOFError" 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'attribut "str()" de
   l'objet est écrit à la place de l'attribut "repr()". Retourne "0"
   en cas de succès ou "-1" en cas échec ; l'exception appropriée sera
   levée.

int PyFile_WriteString(const char *s, PyObject *p)

   Écrit la chaîne de caractères *s* dans l'objet fichier *p*.
   Retourne "0" en cas de succès ou "-1" en cas d'échec ; l'exception
   appropriée sera mise en place.
