파일 객체
*********

이 API는 C 표준 라이브러리의 버퍼링 된 I/O ("FILE*") 지원에 의존하는
내장 파일 객체에 대한 파이썬 2 C API의 최소 에뮬레이션입니다. 파이썬 3
에서, 파일과 스트림은 새로운 "io" 모듈을 사용합니다. 이 모듈은 운영 체
제의 저수준 버퍼링 되지 않은 I/O 위에 여러 계층을 정의합니다. 아래에서
설명하는 함수는 이러한 새로운 API에 대한 편리한 C 래퍼이며, 주로 인터
프리터의 내부 오류 보고를 위한 것입니다; 제삼자 코드는 대신 "io" API에
액세스하는 것이 좋습니다.

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.*

   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.

   경고:

     파이썬 스트림이 자체적인 버퍼링 계층을 가지고 있으므로, OS 수준의
     파일 기술자와 혼합하면 여러 예기치 못한 문제가 발생할 수 있습니다
     (가령 데이터의 예상치 못한 순서).

   버전 3.2에서 변경: *name* 어트리뷰트를 무시합니다.

int PyObject_AsFileDescriptor(PyObject *p)

   *p*와 관련된 파일 기술자를 "int"로 반환합니다. 객체가 정수면, 값이
   반환됩니다. 그렇지 않으면 객체의 "fileno()" 메서드가 있으면 호출됩
   니다; 메서드는 반드시 정수를 반환해야 하고, 그 값이 파일 기술자 값
   으로 반환됩니다. 실패하면 예외를 설정하고 "-1"을 반환합니다.

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

   "p.readline([n])"과 동등합니다. 이 함수는 객체 *p*에서 한 줄을 읽습
   니다. *p*는 파일 객체나 "readline()" 메서드가 있는 임의의 객체일 수
   있습니다. *n*이 "0"이면, 줄의 길이와 관계없이 정확히 한 줄을 읽습니
   다. *n*이 "0"보다 크면, *n* 바이트 이상을 파일에서 읽지 않습니다;
   불완전한 줄이 반환될 수 있습니다. 두 경우 모두, 파일 끝에 즉시 도달
   하면 빈 문자열이 반환됩니다. 그러나 *n*이 "0"보다 작으면, 길이와 관
   계없이 한 줄을 읽지만, 파일 끝에 즉시 도달하면 "EOFError"가 발생합
   니다.

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

   객체 *obj*를 파일 객체 *p*에 씁니다. *flags*에서 지원되는 유일한 플
   래그는 "Py_PRINT_RAW"입니다; 주어지면, "repr()" 대신 객체의 "str()"
   이 기록됩니다. 성공하면 "0"을, 실패하면 "-1"을 반환합니다; 적절한
   예외가 설정됩니다.

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

   문자열 *s*를 파일 객체 *p*에 씁니다. 성공하면 "0"을 반환하고, 실패
   하면 "-1"을 반환합니다; 적절한 예외가 설정됩니다.
