使用 argparse 解析字符串

2023-12-23

所以我希望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 and parser应该使用它

import sys

sys.argv = ["script", "arg1", "arg2", "arg3"]

如果你愿意的话它会很有用append()从命令行获得的值的一些选项

sys.argv.append("--debug")

如果你有更复杂的command带引号的字符串,例如

'arg1 "Hello World" arg3' 

那么你可以使用标准模块shlex https://docs.python.org/3/library/shlex.html将其正确拆分为三个参数

import shlex
shlex.split('arg1 "Hello world" arg3')


['arg1', 'Hello World', 'arg3']. 

Normal command.split(" ")会错误地给出四个参数

['arg1', '"Hello', 'World"', 'arg3']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 argparse 解析字符串 的相关文章

随机推荐