有没有办法清除python argparse?
考虑以下脚本:有没有办法清除python argparse?,python,argparse,Python,Argparse,考虑以下脚本: import argparse parser1 = argparse.ArgumentParser() parser1.add_argument('-a') args1 = parser1.parse_args() parser2 = argparse.ArgumentParser() parser2.add_argument('-b') args2 = parser2.parse_args() 我有几个问题: parse_args是一次性方法还是有办法清除 添加新参数之前的
import argparse
parser1 = argparse.ArgumentParser()
parser1.add_argument('-a')
args1 = parser1.parse_args()
parser2 = argparse.ArgumentParser()
parser2.add_argument('-b')
args2 = parser2.parse_args()
我有几个问题:
args1.clear()
或parser1.clear()
)-a
参数,它不接受“a”的任何值。也不是
接受任何-b
参数。有没有办法让这些论点真正起作用名称空间
对象(伪dict),而不需要修改过程中的任何内容
因此,可以考虑<代码> PARSEIGARSH()/<代码>是幂等的。您可以反复调用它,同样的输出也会出现。默认情况下,它将从存储控制台参数的
sys.argv
读取参数
但是,请注意,您可以通过向parse_args
函数传递一个列表来导入自定义参数,以便解析器将使用除sys.argv
之外的其他内容作为输入python myscript.py-a 15
,args1
将等于名称空间(a='15')
。然后可以执行args1['a']
以获得15的值。如果要使标志充当切换,请调用parser.add_参数('-a',action='store_true')
。以下是所有可用操作的列表init.py
中的函数。这样做的另一个好处是保持UI的独立性,并且更容易与代码的其余部分互换名称空间
对象(伪dict),而不需要修改过程中的任何内容
因此,可以考虑<代码> PARSEIGARSH()/<代码>是幂等的。您可以反复调用它,同样的输出也会出现。默认情况下,它将从存储控制台参数的
sys.argv
读取参数
但是,请注意,您可以通过向parse_args
函数传递一个列表来导入自定义参数,以便解析器将使用除sys.argv
之外的其他内容作为输入python myscript.py-a 15
,args1
将等于名称空间(a='15')
。然后可以执行args1['a']
以获得15的值。如果要使标志充当切换,请调用parser.add_参数('-a',action='store_true')
。以下是所有可用操作的列表init.py
中的函数。这样做的另一个好处是保持UI的独立性,并且更容易与代码的其余部分互换你的情况很不清楚,但我想你要找的是 在这里,我猜您从其他文件调用了
init.py
,比如caller1.py
和caller2.py
还假设init.py
只解析-a
参数,而原始脚本将解析其余的参数
您可以这样做:
在init.py
中,将其放入dou things
方法:
parser = argparse.ArgumentParser()
parser.add_argument('-a')
parsed = parser.parse_known_args(sys.argv)
print 'From init.py: %s' % parsed['a']
在调用方1.py中:
init.do_things(sys.argv)
parser = argparse.ArgumentParser()
parser.add_argument('-b')
parsed = parser.parse_known_args(sys.argv)
print 'From caller1.py: %s' % parsed['b']
如果按如下方式调用caller1.py
:python caller1.py-a foo-b bar
,结果将是:
From init.py: foo
From caller1.py: bar
但是如果您的场景实际上不是这样,我建议使用@Michael0x2a answer,这只是在
caller1.py
中使用单个ArgumentParser
对象,并为init.py
适当地传递值。您的场景非常不清楚,但我猜您正在寻找的是
在这里,我猜您从其他文件调用了init.py
,比如caller1.py
和caller2.py
还假设init.py
只解析-a
参数,而原始脚本将解析其余的参数
您可以这样做:
在init.py中
将其放入do\u thin中