argparse 存储到多个目的地
argparse store to multiple destination
我正在编写 Python 脚本。我有两个具有一些默认值的变量。我想传递一个参数并将它们设置为特殊值。
我可以直接使用 argparse
吗?
我当前的代码:
import argparse
ap = argparse.ArgumentParser()
ap.add_argument('-s', help="set special values", action='store_true')
args = ap.parse_args()
if args.s:
# special
args.a = 100
args.b = 100
else:
# default
args.a = 10
args.b = 10
print(vars(args))
我想做这样的事情:
ap.add_argument("-s",
action="store_const",
dest=["a", "b"],
const=[100,100],
default=[10,10],
help="set special values")
From the doc,它说 action='store_true'
会将您的变量设置为 True
。不是另一个值。 :)
好吧,这是一种方法...
import argparse
ap = argparse.ArgumentParser()
ap.add_argument('-s', type=int, default=None, help="set special values")
args = ap.parse_args()
if args.s:
# special
args.a = args.s
args.b = args.s * 10
else:
# default
args.a = 10
args.b = 10
print(vars(args))
由于代码非常简单,并且与您的代码几乎相同,如果您有问题,请提问。 :)
此代码将输出...
a = 10 且 b = 10,或 a =,且 b =<此值的 10 倍>。
用法:python <your_file.py> -s=<your_number>
store_true
是 store_const
的子 class。可以改用:
In [309]: ap = argparse.ArgumentParser()
In [310]: ap.add_argument('-s',action='store_const',default=(10,10),
const=(100, 100));
然后 args.s
将被设置为一个元组或另一个:
In [317]: ap.parse_args([])
Out[317]: Namespace(s=(10, 10))
In [318]: ap.parse_args(['-s'])
Out[318]: Namespace(s=(100, 100))
您还可以使用 unpacking
将这些值分配给 a
和 b
属性
In [319]: args = ap.parse_args(['-s'])
In [320]: args.a, args.b = args.s
In [321]: args
Out[321]: Namespace(a=100, b=100, s=(100, 100))
您还可以使用自定义 Action
class 设置 a
和 b
,如以下问题所示:
Python `argparse`: Is there a clean way to add a flag that sets multiple flags (e.g. `--all`" is equivalent to `--x --y`)
我正在编写 Python 脚本。我有两个具有一些默认值的变量。我想传递一个参数并将它们设置为特殊值。
我可以直接使用 argparse
吗?
我当前的代码:
import argparse
ap = argparse.ArgumentParser()
ap.add_argument('-s', help="set special values", action='store_true')
args = ap.parse_args()
if args.s:
# special
args.a = 100
args.b = 100
else:
# default
args.a = 10
args.b = 10
print(vars(args))
我想做这样的事情:
ap.add_argument("-s",
action="store_const",
dest=["a", "b"],
const=[100,100],
default=[10,10],
help="set special values")
From the doc,它说 action='store_true'
会将您的变量设置为 True
。不是另一个值。 :)
好吧,这是一种方法...
import argparse
ap = argparse.ArgumentParser()
ap.add_argument('-s', type=int, default=None, help="set special values")
args = ap.parse_args()
if args.s:
# special
args.a = args.s
args.b = args.s * 10
else:
# default
args.a = 10
args.b = 10
print(vars(args))
由于代码非常简单,并且与您的代码几乎相同,如果您有问题,请提问。 :)
此代码将输出...
a = 10 且 b = 10,或 a =,且 b =<此值的 10 倍>。
用法:python <your_file.py> -s=<your_number>
store_true
是 store_const
的子 class。可以改用:
In [309]: ap = argparse.ArgumentParser()
In [310]: ap.add_argument('-s',action='store_const',default=(10,10),
const=(100, 100));
然后 args.s
将被设置为一个元组或另一个:
In [317]: ap.parse_args([])
Out[317]: Namespace(s=(10, 10))
In [318]: ap.parse_args(['-s'])
Out[318]: Namespace(s=(100, 100))
您还可以使用 unpacking
将这些值分配给 a
和 b
属性
In [319]: args = ap.parse_args(['-s'])
In [320]: args.a, args.b = args.s
In [321]: args
Out[321]: Namespace(a=100, b=100, s=(100, 100))
您还可以使用自定义 Action
class 设置 a
和 b
,如以下问题所示:
Python `argparse`: Is there a clean way to add a flag that sets multiple flags (e.g. `--all`" is equivalent to `--x --y`)