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. ReturnerarNULL
vid misslyckande. För en mer omfattande beskrivning av argumenten, se dokumentationen för funktionenio.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 enreadline()
-metod. Om n är0
läses exakt en rad, oavsett hur lång raden är. Om n är större än0
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 än0
läses dock en rad oavsett längd, menEOFError
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.
-
typedef PyObject *(*Py_OpenCodeHookFunction)(PyObject*, void*)¶
-
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 objektetsstr()
istället förrepr()
. Returnerar0
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.