質問

の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);
それが意味している場合、それはPythonは、ファイル名からファイルを開くが、それはCで、自分を行うには些細なことする必要があります。

持ってすることはできません。

わかりません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top