使用 Python C 扩展获取当前工作目录

Get Current Working Directory With Python C Extension

我正在构建一个可以加载图像的 Python C 扩展。 要加载某个图像,用户必须写入该图像的文件路径。

问题是用户必须键入整个文件路径,即使图像与他们的模块位于同一目录中也是如此。

Python 本身有一些有用的工具,如 os.pathpathlib 可以帮助您找到当前模块的路径。 我搜索了 Python C API,但似乎找不到任何与在 C 中查找当前工作目录相关的工具。

我可以做什么 - 在 C 中 - 获取用户模块目录的路径? 有没有Python.h函数? 我采取了错误的方法吗?

python c api 可以与许多您可以在 Python 中做的事情进行交互。

在 Python 你会怎么做?您会 import os 并调用 os.getcwd(),对吗?

原来你可以在 c api.

中做同样的事情
PyObject *os_module = PyImport_ImportModule("os");
if (os_module == NULL) { //error handling
    return NULL;
}

PyObject* cwd = PyObject_CallMethod(os_module, "getcwd", NULL);
if (cwd == NULL) { //error handling
    return NULL;
}

char* result = PyUnicode_AsUTF8(cwd);

然后当您完成模块或一般的任何 pyobject 时,请记住对其调用 Py_DECREF()