如何从Python C API获取历史记录

时间:2018-12-28 13:29:44

标签: python c python-3.x embed python-c-api

我想从Python获取历史记录(和内容)。

可以从命令行使用readline模块(通过pip install pyreadline安装):

import readline
x=readline.get_current_history_length()
x

应收成2。 但是,无论实际历史如何,使用Python C API的相同代码始终返回零:

#include <Python.h>

long GetHistoryCount() {
    Py_Initialize();
    PyRun_SimpleString("import readline");
    PyRun_SimpleString("x=readline.get_current_history_length()");

    PyObject *mainModule = PyImport_AddModule("__main__");
    PyObject *var = PyObject_GetAttrString(mainModule, "x");

    Py_Finalize();
    return PyLong_AsLong(var);
}

int main(int argc, char **argv) {
    long count = GetHistoryCount();
    printf("Count: %ld", count);
    return EXIT_SUCCESS;
}

打印:Count: 0

如何从Python C API获取历史记录?

this discussion中找到了readline模块

0 个答案:

没有答案