Python 3 C API의 파일 I/O
-
23-08-2019 - |
문제
Python 3.0의 C API는 파일 객체의 많은 함수를 변경 (더 이상 사용하지 않았습니다).
2.X에서 사용하기 전에 사용할 수 있습니다
PyObject* PyFile_FromString(char *filename, char *mode)
Python 파일 개체를 만들려면 예를 들어 :
PyObject *myFile = PyFile_FromString("test.txt", "r");
... 그러나 그러한 기능은 더 이상 Python 3.0에 존재하지 않습니다. Python 3.0은 그러한 통화와 동등한 것은 무엇입니까?
해결책
IO 모듈을 호출하여 구식 (신규?)-형태의 방식으로 할 수 있습니다.
이 코드는 작동하지만 오류 확인은 없습니다. 설명은 문서를 참조하십시오.
PyObject *ioMod, *openedFile;
PyGILState_STATE gilState = PyGILState_Ensure();
ioMod = PyImport_ImportModule("io");
openedFile = PyObject_CallMethod(ioMod, "open", "ss", "foo.txt", "wb");
Py_DECREF(ioMod);
PyObject_CallMethod(openedFile, "write", "y", "Written from Python C API!\n");
PyObject_CallMethod(openedFile, "flush", NULL);
PyObject_CallMethod(openedFile, "close", NULL);
Py_DECREF(openedFile);
PyGILState_Release(gilState);
Py_Finalize();
다른 팁
이 페이지 API는 다음과 같이 주장합니다.
PyFile_FromFd(int fd, char *name, char *mode, int buffering, char *encoding, char *newline, int closefd);
그것이 파이썬에서 파일을 파일을 열 수 없다는 것을 의미하는지 확실하지 않지만 C에서 스스로해야 할 일이 될 것입니다.
제휴하지 않습니다 StackOverflow