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"

これを使用して、if/it が失敗したスクリプトの行番号を表示したいと思います。他の多くの人が PyRun_SimpleString で成功しているようです!

前もって感謝します。

4

1 に答える 1

3

この場合、PyRun_SimpleString は使用しません。これは、プログラム全体を 1 行で読み取ることを想定しており、複数の行に分割しているためです。

あなたはただ使うべきですPyRun_SimpleFile(fileReference, scriptPath)

注: 上記を機能させるには、globals および locals オブジェクトを作成する必要があります。

これを見る

于 2013-02-19T21:51:15.800 に答える