1

对于名称/路径中包含 unicode(widechar)的文件,我无法让 PyRun_SimpleFile 工作(FILE* 兼容性问题),因此这个问题!

因此,我决定自己打开 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 取得了成功!

提前致谢。

4

1 回答 1

3

在这种情况下,您不会使用 PyRun_SimpleString,因为它希望在一行中读取整个程序,您将其分成多行。

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

注意:您需要创建 globals 和 locals 对象才能使上述工作。

看到这个

于 2013-02-19T21:51:15.800 回答