Dokumen ini untuk versi lama Python yang tidak didukung lagi. Anda harus memutakhirkan, dan membaca Dokumentasi Python untuk rilis stabil saat ini.

# 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)
  Return value: New reference.

  Membuat objek file Python dari deskriptor file dari file yang sudah dibuka fd. Argumen name, encoding, errors dan * newline* bisa `NULL` untuk menggunakan nilai default; buffering bisa -1 untuk menggunakan default. name diabaikan dan disimpan untuk kompatibilitas ke belakang. Mengembalikan `NULL` jika gagal. Untuk penjelasan yang lebih lengkap tentang argumen, silakan merujuk ke dokumentasi fungsi `io.open()`.

  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.