在 pybind11 (C++) 中使用内置 "open" python 方法?

Using built-in "open" python method in pybind11 (C++)?

在pybind11中如何使用基本的("default"/"built-in";不需要导入)python方法?

列表、字典和其他一些确实具有内置兼容性,但我专门寻找的方法 (open) 并未通过导入包含在内。我知道解决它的一种方法是创建一个 python 文件,方法包装 "open" 然后像调用任何导入的方法一样调用它,但我更愿意直接在 C++ 中执行(使用pybind) 如果可能的话,否则会半途而废。

任何 assistance/advice 将不胜感激。

你错了。首先,内置名称是importable from builtins module(在Python 3):

py::object open = py::module::import("builtins").attr("open");

其次,open 也存在于 io 模块中,因此您也可以使用与上面的行等效的以下行:

py::object open = py::module::import("io").attr("open");

这适用于 Python 3,但最后一行也适用于 Python 2.7。