2011-07-02 16 views

答えて

5

ライン

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#の最初の引数としてスクリプトのパスを明示的に追加します。

+0

Arg0を削除すると問題が解決しました。 IronPython/.NETは引数を別々に扱うようです。ご協力いただきありがとうございます。 – pfeds

+0

'sys.argv'はArgumentsオプションから直接設定されます。そこにスクリプト名が必要な場合は、自分で追加する必要があります。 –

+0

IronPythonの新しいバージョンには 'ScriptEngine.Sys'がありません –

2

このエラーの文字通りの意味は、sys.argvには3つの値しか含まれていませんが、そこには4つの変数があります。 (4つの値を3つの変数に解凍しようとしたときに表示されるエラーメッセージは、「解凍するには値が大きすぎます」となります)。sys.argvにはarg0が含まれていないのはなぜですか.NETがこれらのような場合に引数を処理する方法と関係があると仮定することしかできません。 arg0を削除し、何が起こるかをご覧ください。

+0

IronPythonが引数を異なる方法で処理するのは間違いありません。私はarg0を削除して動作します。 – pfeds

関連する問題