Python 不从命令行中提取一个以上的参数

Python not pulling more than one argument from command line

我已经尝试了几种方法,虽然我无法分享我的项目的细节,但我可以将其归结为本质。

我有如下内容

import argparse,sys
parser = argparse.ArgumentParser()
parser.add_argument('password', help='The password')
parser.add_argument('--optionalArg', help='Just an optional arg')
args=parser.parse_args()
print(sys.argv[1])

当 运行 从 Windows 10 PC 安装 Python 3.6.x 时,我得到如下输出:

test.py test --optionalArg myArg
test --optionalArg myArg

我什至尝试直接使用 Python 中的 Argparse 示例并获得类似的行为。

现在,巧合的是在另一台机器上,运行 Windows 10 和 Python 3.6.x 也可以。现在他们有两个次要版本。

我还看到了另一个关于 SO 的问题(虽然在找到它时遇到问题)建议在 HKLR/Applications/python 中确保有一个“%*”,它使第一个参数完全出现在它所在的机器上不起作用。这说明我注意到这个条目在它正在工作的机器上根本不存在。

我知道这可能是注册表问题或与安装有关的其他问题。我正在进一步调查,看看是否可以查明问题所在。

如果有任何其他问题,我会在这里更新。

编辑:

我已将示例代码缩减为仅三行:

import sys
print(sys.argv[1])
print(sys.argv[:1])

仍然输出以下内容:

>argtest.py 1 2 3
1 2 3
['1 2 3'] 

在有问题的机器上。

好吧,我想通了。

正如 Eryksun 在我的问题和其他问题中指出的那样,注册表中的 .py 应该指向 Python.File。 (特别是 Computer\HKEY_CLASSES_ROOT.py 注册表)

现在很好,很漂亮...如果设置正确的话。因此,当我在有问题的机器上指向那里(从我能看到的一切)时,我在注册表中发现了一个问题,我有“%”而不只是 %

如果我学到了什么,那就是永远不要添加答案中没有明确说明的内容,以免它不起作用。