好的,我发现了三个类似的线程,但它们都处理了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中不能用于此目的。无论哪种方式,我如何让模块识别参数?
答案 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安装中的错误。