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.
