2013-02-19 71 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