问题描述
我已经尝试了几种方法,虽然我无法共享项目的细节,但是可以将其精简为实质。
我有下面的东西
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楼
好吧,所以我想到了这个。
正如Eryksun在我的问题以及其他问题中所指出的那样,注册表中的.py应该指向Python.File。 (特别是Computer \\ HKEY_CLASSES_ROOT.py注册表)
现在很好,花花公子...如果设置正确。 因此,尽管我的问题在问题机器上指向那里(从我能看到的一切),但我在注册表中发现了一个问题,其中我有“% ”而不是仅%
如果我学到了什么,它永远不会在答案中明确添加未明确列出的内容,以免可能无效。