0

OK、似たようなスレッドが 3 つ見つかりましたが、それらはすべて C# のコマンドライン引数を扱っていました。私の質問は、コマンド ライン引数を cmd ウィンドウから IronPython に読み込むにはどうすればよいですか?

これらのドキュメントのセクション 2.1.1 を読んだ方法では、CPython と同じように動作するはずです。sysモジュールをインポートして、sys.argv配列から値を取得するだけです。そうではありません。これが私が試したテストコードです(ファイルz.py):

import sys
print sys.argv[0]
print sys.argv[1]

CPython (2.7.4) インタープリターを使用してこれを呼び出すとz.py testing、期待どおりの結果が得られます。

E:\>c:\python27\python.exe z.py testing
z.py
testing

E:\>

しかし、IronPython (2.7.3) インタープリターを使用して呼び出すと、次のようになります。

Traceback (most recent call last):
  File "E:\z.py", line 3, in <module>
IndexError: index out of range: 1

3 行目をコメントアウトして IronPython で再試行すると、正常に動作します。

E:\>z.py testing
E:\z.py

E:\>

が割り当てsys.argv[0]られていますが、それだけです。コマンドライン引数は、 の追加要素として表示されることはありませんsys.argv

したがって、私が見逃している追加のステップがあるかsys.argv、IronPython でこの目的のために機能しないだけです。いずれにしても、モジュールに引数を認識させるにはどうすればよいですか?

4

1 に答える 1

1

問題は、IronPython のインストールで Python インタープリターが正しく登録されていないことです。最初の引数 (スクリプト名) を IronPython インタープリターに渡すだけで、残りの引数はありません。つまり、ではなく で*.pyファイルを登録しました。...\ipy.exe %1...\ipy.exe %*

解決策は、python.exe を使用する場合と同様に、インタープリターを使用してスクリプトを直接実行することです。

E:\>c:\path\to\ipy64.exe z.py testing

そして次のようではありません

E:\>z.py testing

これは、IronPython インストールのバグとして報告されるべきだと思います。

于 2013-09-17T23:58:13.877 に答える