有没有办法--使用 argparse 将值传递给 Python 程序而不使用等号 (=) ?
我添加到 argparser 的命令行参数定义如下:
parser.add_argument('--myarg', help="my arg description")
Run Code Online (Sandbox Code Playgroud)
您可以在如下程序中使用此参数:
python myprogram.py --myarg value123
Run Code Online (Sandbox Code Playgroud)
有没有办法用 -- 作为值而不是“value123”来运行这个程序?
IE
python myprogram.py --myarg --
Run Code Online (Sandbox Code Playgroud)
我怀疑本地不可能做到argparse这一点。不过,您可以进行预处理sys.argv,作为一种非侵入性的解决方法。
import sys
from argparse import ArgumentParser
from uuid import uuid4
sentinel = uuid4().hex
def preprocess(argv):
return [sentinel if arg == '--' else arg for arg in argv[1:]]
def postprocess(arg):
return '--' if arg == sentinel else arg
parser = ArgumentParser()
parser.add_argument('--myarg', help="my arg description", type=postprocess)
args = parser.parse_args(preprocess(sys.argv))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5605 次 |
| 最近记录: |