2013-02-19 34 views
1

我不能让PyRun_SimpleFile工作(FILE *兼容性问题),对具有在其名称/路径的unicode(widechar),因此这个问题的文件!PyRun_SimpleString失败的高清FOO():

所以,我决定开python脚本自己&然后执行使用PyRun_SimpleString每一行。这里显示

伪代码。

wchar_t* pWScriptName=NULL; 
// pWScriptName malloced & populated here 
FILE* fp = _wfopen(pWScriptName, L"r"); 
while (fgets(line, BUFSIZ, fp) != NULL) { 
    int ret = PyRun_SimpleString(line); 
    if(ret != 0) { 
     ... error at lineNum ... 
    } 
    lineNum++; 
} 

下面的DEF声明以上提供了错误(< - 如下图所示)

Python版本是2.7

import os 
print "hello" 
def foo(): # <-- PyRun_SimpleString fails here 
    print "hello again" 

我想用它来显示的行数脚本,如果/它失败。许多其他人似乎用PyRun_SimpleString成功!

在此先感谢。

+1

PyRun_SimpleString期望的完整源代码串,而不是从它的单行。 – 2013-02-19 22:08:39

回答

3

因为它需要读入程序的全部在同一行,你把它分成多行,你不会在这种情况下使用PyRun_SimpleString。

你应该只使用PyRun_SimpleFile(fileReference, scriptPath)

注意:您需要创建全局和当地人对象为上述工作。

See this

+0

问题是PWScriptName是wchar_t *。我已经更新了这个问题。但是正如前面提到的,我无法让PyRun_SimpleFile在路径/名称中使用文件修剪宽字符。 – sambha 2013-02-19 22:07:32

+0

你不通过wchar_t *在这种情况下,你需要给它(fp,scriptPath) – 2013-02-19 22:17:12

+0

我知道。所有将FILE *作为参数的PyRun API都会崩溃,因为VC2010和Python的FILE结构不匹配。这是一个有据可查的问题,特别是对于Windows。 – sambha 2013-02-19 22:34:00