Filobjekt

Dessa API:er är en minimal emulering av Python 2 C API för inbyggda filobjekt, som tidigare förlitade sig på buffrad I/O (FILE*) från C-standardbiblioteket. I Python 3 använder filer och strömmar den nya modulen io, som definierar flera lager över operativsystemets obuffrade I/O på låg nivå. Funktionerna som beskrivs nedan är praktiska C-omslag över dessa nya API:er och är främst avsedda för intern felrapportering i tolken; tredjepartskod rekommenderas att komma åt io API:erna istället.

PyObject *PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const char *encoding, const char *errors, const char *newline, int closefd)
Returnera värde: Ny referens. En del av Stabil ABI.

Skapar ett Python-filobjekt från filbeskrivningen för en redan öppnad fil fd. Argumenten name, encoding, errors och newline kan vara NULL för att använda standardvärdena; buffering kan vara -1 för att använda standardvärdet. name ignoreras och behålls för bakåtkompatibilitet. Returnerar NULL vid misslyckande. För en mer omfattande beskrivning av argumenten, se dokumentationen för funktionen io.open().

Varning

Eftersom Python-strömmar har sitt eget buffertlager kan det uppstå olika problem (t.ex. oväntad ordning på data) om de blandas med filbeskrivare på OS-nivå.

Ändrad i version 3.2: Ignorera attributet name.

int PyObject_AsFileDescriptor(PyObject *p)
En del av Stabil ABI.

Returnerar filbeskrivaren som är associerad med p som ett int. Om objektet är ett heltal returneras dess värde. Om inte, anropas objektets fileno()-metod om den finns; metoden måste returnera ett heltal, vilket returneras som filbeskrivarens värde. Ställer in ett undantag och returnerar -1 om det misslyckas.

PyObject *PyFile_GetLine(PyObject *p, int n)
Returnera värde: Ny referens. En del av Stabil ABI.

Denna funktion motsvarar p.readline([n]) och läser en rad från objektet p. p kan vara ett filobjekt eller ett objekt med en readline()-metod. Om n är 0 läses exakt en rad, oavsett hur lång raden är. Om n är större än 0 kommer inte mer än n byte att läsas från filen; en partiell rad kan returneras. I båda fallen returneras en tom sträng om slutet på filen nås omedelbart. Om n är mindre än 0 läses dock en rad oavsett längd, men EOFError returneras om slutet på filen nås omedelbart.

int PyFile_SetOpenCodeHook(Py_OpenCodeHookFunction handler)

Åsidosätter det normala beteendet hos io.open_code() att skicka sin parameter genom den tillhandahållna hanteraren.

Hanteraren är en funktion av typ:

typedef PyObject *(*Py_OpenCodeHookFunction)(PyObject*, void*)

Motsvarar PyObject *(*)(PyObject *path, void *userData), där path garanterat är PyUnicodeObject.

Pekaren userData skickas till hook-funktionen. Eftersom hook-funktioner kan anropas från olika runtimes bör denna pekare inte referera direkt till Python-tillstånd.

Eftersom den här hooken avsiktligt används under import bör du undvika att importera nya moduler under dess exekvering om du inte vet att de är frysta eller finns tillgängliga i sys.modules.

När en hook har ställts in kan den inte tas bort eller ersättas, och senare anrop till PyFile_SetOpenCodeHook() kommer att misslyckas. Om funktionen misslyckas returnerar den -1 och anger ett undantag om tolken har initialiserats.

Den här funktionen är säker att anropa före Py_Initialize().

Utlöser en auditing event setopencodehook utan argument.

Tillagd i version 3.8.

int PyFile_WriteObject(PyObject *obj, PyObject *p, int flags)
En del av Stabil ABI.

Skriv objekt obj till filobjekt p. Den enda flaggan som stöds för flags är Py_PRINT_RAW; om den anges skrivs objektets str() istället för repr(). Returnerar 0 vid framgång eller -1 vid misslyckande; lämpligt undantag kommer att ställas in.

int PyFile_WriteString(const char *s, PyObject *p)
En del av Stabil ABI.

Skriv sträng s till filobjekt p. Returnerar 0 vid framgång eller -1 vid misslyckande; lämpligt undantag kommer att ställas in.