在IronPython中读取Windows命令行参数

时间:2013-09-17 20:45:12

标签: windows command-line-arguments ironpython

好的,我发现了三个类似的线程,但它们都处理了C#中的命令行参数。我的问题是,如何从cmd窗口读取命令行参数到IronPython?

我在these docs中阅读第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中不能用于此目的。无论哪种方式,我如何让模块识别参数?

1 个答案:

答案 0 :(得分:1)

问题是IronPython安装没有正确注册python解释器。它只是将第一个参数(这是脚本名称)传递给IronPython解释器,遗漏了其余的参数。也就是说:它使用*.py而不是...\ipy.exe %1注册了...\ipy.exe %*个文件。

解决方案是直接使用解释器运行脚本 - 就像使用python.exe一样:

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

as:

E:\>z.py testing

我认为这应该被报告为IronPython安装中的错误。