「を解凍するxの値以上のものを必要とします」 :私はIronPythonのを使用してPythonスクリプトを呼び出すには、次のC#コードを使用してい
arg0,input,key,output = sys.argv
"3つ以上の値をアンパックする必要があります"というエラーが表示されます。私は間違って何をしていますか?
「を解凍するxの値以上のものを必要とします」 :私はIronPythonのを使用してPythonスクリプトを呼び出すには、次のC#コードを使用してい
arg0,input,key,output = sys.argv
"3つ以上の値をアンパックする必要があります"というエラーが表示されます。私は間違って何をしていますか?
ライン
arg0,input,key,output = sys.argv
左の4つの変数にsys.argv
の引数のリストをアンパック。 sys.argv
には3つの引数しかないので、あなたが投稿したエラーメッセージで失敗します(明らかに、スクリプトパスをsys.argv
の最初の要素として表示するには、手動でスクリプトパスを渡す必要があります)。
(this answerから)コマンドライン引数を渡すの別の方法を試してください。問題が解決しない場合は
scriptEngine.Sys.argv = List.Make(new[] { 'input.7z', ... });
あるいは、その後、Pythonのファイルに割り当てからarg0
変数を削除するのいずれか、またはC#の最初の引数としてスクリプトのパスを明示的に追加します。
このエラーの文字通りの意味は、sys.argv
には3つの値しか含まれていませんが、そこには4つの変数があります。 (4つの値を3つの変数に解凍しようとしたときに表示されるエラーメッセージは、「解凍するには値が大きすぎます」となります)。sys.argv
にはarg0
が含まれていないのはなぜですか.NETがこれらのような場合に引数を処理する方法と関係があると仮定することしかできません。 arg0
を削除し、何が起こるかをご覧ください。
IronPythonが引数を異なる方法で処理するのは間違いありません。私はarg0を削除して動作します。 – pfeds
Arg0を削除すると問題が解決しました。 IronPython/.NETは引数を別々に扱うようです。ご協力いただきありがとうございます。 – pfeds
'sys.argv'はArgumentsオプションから直接設定されます。そこにスクリプト名が必要な場合は、自分で追加する必要があります。 –
IronPythonの新しいバージョンには 'ScriptEngine.Sys'がありません –