在Windows上理解Python 3 argparse()

2 投票
1 回答
3873 浏览
提问于 2025-04-30 05:18

我显然需要在使用argparse时得到帮助。从3.4手册来看,如果我在命令行输入

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 Launcher,这意味着它试图在我的Mac主机上运行这个脚本。我修改了关联到本地的python二进制文件,但现在又出现了这个问题。我尝试修改注册表来解决,但它已经正确设置为"c:\windows\py.exe" "%1" %*

暂无标签

1 个回答

2

好的,我发现问题出在哪里了。
我把文件关联设置成了 .py(还有 .pyc, .pyo, .pyw)指向了具体的 Python 程序路径。这样做并不管用,即使你去修改注册表也没用。
我回到文件关联设置('电脑设置' > 搜索与应用 > 默认设置(滚动到最底部) > 按扩展名的文件 > 滚动到 .py),然后点击 .py 扩展名,选择 'Windows 的 Python 启动器(控制台)',这样我的脚本就正常运行了。

总的来说,就是要选择正确的启动器。

撰写回答