문제

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에서 스스로해야 할 일이 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top