当前位置: 代码迷 >> python >> Python不能从命令行中提取多个参数
  详细解决方案

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

热度:8   发布时间:2023-07-14 09:49:14.0

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

我有下面的东西

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

在机器上的问题。

好吧,所以我想到了这个。

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

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

如果我学到了什么,它永远不会在答案中明确添加未明确列出的内容,以免可能无效。