Objek File

These APIs are a minimal emulation of the Python 2 C API for built-in file objects, which used to rely on the buffered I/O (FILE*) support from the C standard library. In Python 3, files and streams use the new io module, which defines several layers over the low-level unbuffered I/O of the operating system. The functions described below are convenience C wrappers over these new APIs, and meant mostly for internal error reporting in the interpreter; third-party code is advised to access the io APIs instead.

PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const char *encoding, const char *errors, const char *newline, int closefd)

Create a Python file object from the file descriptor of an already opened file fd. The arguments name, encoding, errors and newline can be NULL to use the defaults; buffering can be -1 to use the default. name is ignored and kept for backward compatibility. Return NULL on failure. For a more comprehensive description of the arguments, please refer to the io.open() function documentation.

Peringatan

Karena aliran Python memiliki lapisan penyangga sendiri, mencampurnya dengan deskriptor file tingkat OS dapat menghasilkan berbagai masalah (seperti pengurutan data yang tidak terduga).

Berubah pada versi 3.2: Abaikan atribut name.

int PyObject_AsFileDescriptor(PyObject *p)

Mengembalikan deskriptor file yang terkait dengan p sebagai int. Jika objek adalah bilangan bulat, nilainya dikembalikan. Jika tidak, metode objek fileno() akan dipanggil jika ada; metode harus mengembalikan bilangan bulat, yang dikembalikan sebagai nilai deskriptor file. Menetapkan pengecualian dan mengembalikan -1 jika gagal.

PyObject* PyFile_GetLine(PyObject *p, int n)
Return value: New reference.

Setara dengan p.readline([n]), fungsi ini membaca satu baris dari objek p. p dapat berupa objek file atau objek apa pun dengan metode readline(). Jika n adalah 0, tepat satu baris terbaca, berapa pun panjang barisnya. Jika n lebih besar dari 0, tidak lebih dari n byte yang akan dibaca dari file; garis parsial dapat dikembalikan. Dalam kedua kasus, string kosong dikembalikan jika akhir file dicapai dengan segera. Jika n lebih kecil dari 0, bagaimanapun, satu baris dibaca berapa pun panjangnya, tapi EOFError dimunculkan jika akhir file dicapai dengan segera.

int PyFile_WriteObject(PyObject *obj, PyObject *p, int flags)

Menulis objek obj ke file objek p. Satu-satunya tanda yang didukung untuk flags adalah Py_PRINT_RAW; jika diberikan, fungsi str() dari objek akan dituliskan sebagai pengganti repr(). Mengembalikan 0 saat sukses atau -1 saat gagal; pengecualian yang sesuai akan ditetapkan.

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

Menulis string s ke file objek p. Mengembalikan 0 saat sukses atau -1 saat gagal; pengecualian yang sesuai akan ditetapkan.