Windows 当直接调用Python脚本时,为什么argparse无法识别参数?

Windows 当直接调用Python脚本时,为什么argparse无法识别参数?,windows,python-3.4,argparse,Windows,Python 3.4,Argparse,我有这样一个简单的脚本(基于): 但是,当我运行它时,它从未识别我传递的论点: C:\Projects\PyTools>Gritter.py 1 usage: Gritter.py [-h] issuenumber Gritter.py: error: the following arguments are required: issuenumber 但是,如果我通过python调用调用脚本,它会工作: C:\Projects\PyTools>python Gritter.py 1

我有这样一个简单的脚本(基于):

但是,当我运行它时,它从未识别我传递的论点:

C:\Projects\PyTools>Gritter.py 1
usage: Gritter.py [-h] issuenumber
Gritter.py: error: the following arguments are required: issuenumber
但是,如果我通过python调用调用脚本,它会工作:

C:\Projects\PyTools>python Gritter.py 1
Starting work on issue #1
如果我打印出
sys.argv
我会得到:

C:\Projects\PyTools>Gritter 1
['C:\\Projects\\PyTools\\Gritter.py']

C:\Projects\PyTools>Python Gritter.py 1
['Gritter.py', '1']

因此,我猜在直接调用脚本时,没有传递参数。我想知道是否有什么方法可以直接调用脚本?

C\
指示您正在使用Windows。您需要付出额外的努力来确保此“直接调用”将参数传递给
python

查找
windows shebang
我从Python文档中找到了您需要使用的

#!/usr/bin/python -v
辩论

argparse
使用
sys.argv
。如果只有脚本名,则调用不会传递参数。

基于,我修改了以下注册表项:

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
由此:

"C:\Python34\python.exe" "%1"
为此:

"C:\Python34\python.exe" "%1" %*

现在,我的脚本可以像我之前预期的那样工作。

我尝试添加
#/usr/bin/python
,但这似乎无助于解决问题。我还添加了一个args打印输出,显示直接调用脚本会删除额外的参数。可能的重复:它本身看起来像此参数的重复:
"C:\Python34\python.exe" "%1" %*