0
我將Python嵌入到我的C++程序中,並且相當有效地使用了PyRun_SimpleString,但現在遇到了問題。如何運行python文件,使用PyRun讀入std :: string
我所做的是加載一個python.py文件一個std :: string,但現在有麻煩運行它。 PyRun_SimpleFileEx似乎並沒有這樣做,所以一些幫助會很棒!
std::string content;
if(!ail::read_file(python_script, content))
{
error("Failed to load Python script \"" + python_script + "\"");
return false;
}
if(prompt_mode)
initialise_console();
content = ail::replace_string(content, "\r", "");
Py_Initialize();
initialise_module();
std::string script_directory;
if(get_base_name(python_script, script_directory))
PyRun_SimpleString(("import sys\nsys.path.append('" + script_directory + "')\n").c_str());
write_line("Script dir: " + script_directory);
////-python_script H:\\CRAW\\craw\\script\\craw.py
//content.c_str()
//FILE *fp;
//fp = fopen("H:\\CRAW\\craw\\script\\craw.py", "r");
//PyRun_SimpleFileEx(fp, "craw.py", 1);
if(PyRun_SimpleString(content.c_str()) != 0)
{
write_line("The main Python script contained errors.");
return false;
}
//PyRun_SimpleString(("execfile('" + ail::replace_string(python_script, "\\", "\\\\") + "')").c_str());
return true;
發佈您的代碼的一個小樣本,所以我們知道你在做什麼會很棒! – 2010-10-26 22:48:39
提供有問題的代碼 – pyfunc 2010-10-26 22:49:10
如果你需要一個char指針(我不知道PyRun是如何工作的),那麼解決方案可能就像調用std :: strings的c_str方法一樣簡單。 – 2010-10-26 22:54:48