Python不能从命令行中提取多个参数

时间:2018-09-22 18:01:50

标签: python windows registry argparse regedit

我已经尝试了几种方法,虽然我不能分享我的项目的细节,但可以将其精简为实质。

我有类似下面的内容

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])

从装有Python 3.6.x的Windows 10 PC上运行此程序时,我得到如下输出:

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'] 

在有问题的机器上。

1 个答案:

答案 0 :(得分:0)

好的,所以我想出了这个。

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

现在很好,很花哨的东西……如果设置正确的话。因此,尽管我的问题指向了问题机器上的那一处(从我能看到的一切),但我在注册表中发现了一个问题,其中我有“%”而不是仅仅%

如果我学到了任何东西,则永远不要在答案中明确添加未明确列出的内容,以免可能无效。