Я хочу получить счет истории (и содержимое) из 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?
Найден модуль readline в этом обсуждении