2014-10-28 34 views
0

我显然需要argparse的帮助。从3.4 manual,如果我在命令行上键入在Windows上了解Python 3 argparse()

import argparse 
parser = argparse.ArgumentParser(prog='PROG') 
parser.add_argument('-f', '--foo') 
parser.add_argument('bar') 
parser.parse_args() 

,有救了这个代码到test.py,然后运行

test.py bar 

我为我的期望迅速回来,但我得到

usage: PROG [-h] [-f FOO] bar 
PROG: error: the following arguments are required: bar 

我该怎么做才能让test.py接受一个非可选的参数? 顺便说一句,我在Windows 8.1上运行这个,当我在我的Mac上运行相同的代码时,我得到我的提示没有预期的脚本输出。这意味着它与Windows有关。

编辑:我可以在交互式会话中尝试这一点,它也无法正常运行。

编辑:是的 - sys.argv没有附加到它的参数。我认为这与文件关联有关。在安装时,Parallels使用Python的Python启动器,这意味着它试图在我的Mac主机上运行脚本。我编辑关联到本地python二进制文件,但现在这个。我已经尝试黑客注册表来帮助,但它已被正确设置为"c:\windows\py.exe" "%1" %*

+0

你的代码示例适合我。 – 2014-10-28 17:53:10

+0

请参阅编辑 - 它也适用于我的Mac,但不适用于我的Windows VM。我已编辑帖子标题以反映这一点。 – volvox 2014-10-28 17:53:43

+0

我正在运行Windows 7,它仍然有效。 – 2014-10-28 17:54:38

回答

1

好吧,我知道发生了什么事。 我将.py(和.pyc,.pyo,.pyw)的文件关联设置为显式的python二进制路径。即使你破解了注册表,这也行不通。 回到文件关联('PC设置'>搜索&应用程序>默认(滚动到底部)>扩展名文件>滚动到.py)并单击.py扩展名,选择'用于Windows的Python启动器脚本按预期行事。

它归结为选择正确的发射器。