Python 如何使用包含其他参数的argparse解析参数

Python 如何使用包含其他参数的argparse解析参数,python,bash,argparse,Python,Bash,Argparse,我正在使用argparse编写一个脚本,它应该接受用户输入。最后一个参数是--args,有了这个参数,我想接受一个参数字符串,然后将其传递给在我的脚本中调用的bash脚本 下面是一个非常简化的版本: 在Python(myscript.py)中: 在Bash中: python myscript.py --name myname --args --arguments for --the inner --script here 到目前为止,我已经尝试在Bash中转义--s(例如,\\--内部的等),

我正在使用argparse编写一个脚本,它应该接受用户输入。最后一个参数是--args,有了这个参数,我想接受一个参数字符串,然后将其传递给在我的脚本中调用的bash脚本

下面是一个非常简化的版本:

在Python(myscript.py)中:

在Bash中:

python myscript.py --name myname --args --arguments for --the inner --script here
到目前为止,我已经尝试在Bash中转义
--
s(例如,
\\--内部的
等),我可以在Python中替换它们(
“”.join([s.replace(“\\”,“”)表示args.args中的s])
),但这不是很优雅


我想知道是否有更好的方法来处理argparse。argparse有可能。只要此脚本的参数与要传递的参数之间没有重叠*,此方法就可以工作

import argparse
import subprocess


parser = argparse.ArgumentParser()
parser.add_argument("--name", help=description, default="")    # default type is already str

args, other_args = parser.parse_known_args()
subprocess.call("myotherscript.sh {}".format(" ".join(other_args)))
您还可以通过使用
列表
添加来避免加入
ing:

subprocess.call(["myotherscript.sh"] + other_args))

*如文件中所述:

警告

规则适用于
parse\u known\u args()
。解析器可以 使用一个选项,即使它只是一个已知选项的前缀 选项,而不是将其保留在剩余参数列表中


但您可能正在查找。@Graipher是的,很抱歉输入错误,将添加双破折号--
nargs=argparser。余数可以帮助解决前缀匹配问题。
subprocess.call(["myotherscript.sh"] + other_args))