파일 객체

이 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() 메서드가 있는 임의의 객체일 수 있습니다. n0이면, 줄의 길이와 관계없이 정확히 한 줄을 읽습니다. n0보다 크면, n 바이트 이상을 파일에서 읽지 않습니다; 불완전한 줄이 반환될 수 있습니다. 두 경우 모두, 파일 끝에 즉시 도달하면 빈 문자열이 반환됩니다. 그러나 n0보다 작으면, 길이와 관계없이 한 줄을 읽지만, 파일 끝에 즉시 도달하면 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을 반환합니다; 적절한 예외가 설정됩니다.