我在 Windows 7 上.PY
的系统环境PATHEXT
变量中添加了文件。我也添加C:\scripts
到我的PATH
变量中。
考虑我有一个非常简单的 Python 文件 C:\Scripts\helloscript.py
print "hello"
现在我可以使用以下命令从控制台调用 Python 脚本:
C:\>helloscript
输出是:
hello
如果我将脚本更改为更具动态性,请在控制台上将名字作为第二个参数并将其与称呼一起打印出来:
import sys
print "hello,", sys.argv[1]
输出是:
c:\>helloscript brian
Traceback (most recent call last):
File "C:\Scripts\helloscript.py", line 2, in <module>
print sys.argv[1]
IndexError: list index out of range
sys.argv
好像:
['C:\\Scripts\\helloscript.py']
如果我以通常的方式显式调用脚本:
C:\>python C:\Scripts\helloscript.py brian
输出是:
hello, brian
如果我尝试使用optparse
结果是相似的,虽然我可以避免出现错误:
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-f", "--firstname", action="store", type="string", dest="firstname")
(options, args) = parser.parse_args()
print "hello,", options.firstname
输出是:
hello, None
同样,如果我明确地调用它,该脚本可以正常工作。
这是问题。这是怎么回事?为什么在sys.argv
隐式调用我的脚本时不会只填充脚本名称?