天天看點

C++解析Python傳回的清單

python代碼:擷取Gis環境變量預設值 import arcpy def get_envs():       envs = []

      for i in arcpy.ListEnvironments():             env_name = 'arcpy.env.' + i             envs.append(env_name + ':' + str(eval_r(env_name)))

      return envs

if __name__ == "__main__":       get_envs()

C++調用:

int test_get_envs() {

Py_Initialize();

PyObject* get_envs_module = PyImport_ImportModule("get_envs"); PyObject* get_envs_func = PyObject_GetAttrString(get_envs_module, "get_envs"); PyObject* func_ret_val = PyObject_CallFunction(get_envs_func, NULL); int list_len = PyObject_Size(func_ret_val);//清單長度40 PyObject *list_item = NULL;//python類型的清單元素 char * str_item = NULL;//c類型的清單元素 for (int i = 0; i < list_len; i++) { list_item = PyList_GetItem(func_ret_val, i);//根據下标取出python清單中的元素 str_item = PyString_AsString(list_item);//轉換為c類型的資料 printf("%s\n", str_item); } Py_Finalize(); return 0; }