所以我希望argparse的输入是一个字符串而不是命令行。 例如:
python3 some_script.py arg1 arg2 arg3
我想给argparse字符串“arg1 arg2 arg3”
import argparse
command = "arg1 arg2 arg3"
parser = argparse.ArgumentParser()
# add args here
args = parser.parse_args()
# process the command here and extract values
最佳答案
您可以直接在parse_args()
中使用列表
args = parser.parse_args(["arg1", "arg2", "arg3"])
或者您可以使用您的线路
command = "arg1 arg2 arg3"
args = parser.parse_args(command.split(" "))
您始终可以将其放入 sys.argv
中,解析器
应该使用它
import sys
sys.argv = ["script", "arg1", "arg2", "arg3"]
如果您想要append()
某些选项到从命令行获取的值,它会很有用
sys.argv.append("--debug")
如果您有更复杂的命令
,其中包含带引号的字符串
'arg1 "Hello World" arg3'
然后就可以使用标准模块 shlex将其正确拆分为三个参数
import shlex
shlex.split('arg1 "Hello world" arg3')
['arg1', 'Hello World', 'arg3'].
正常的command.split("")
会错误地给出四个参数
['arg1', '"Hello', 'World"', 'arg3']
关于python - 使用 argparse 解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67368666/