如何解决使用 argparse 解析字符串
所以我希望 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()
中使用 list - 通常第一个元素是脚本的名称,但您可以使用任何字符串
args = parser.parse_args( ["script.py","arg1","arg2","arg3"] )
或者你可以使用你的线路
command = "arg1 arg2 arg3"
args = parser.parse_args( ["script.py"] + command.split(" ") )
你总是可以把它放在 sys.argv
中,parser
应该使用它
import sys
sys.argv = ["script","arg3"]
如果您想为从命令行获得的值append()
一些选项,它会很有用
sys.argv.append( "--debug" )
如果您有更复杂的 command
和 " "
之类的
'arg1 "Hello World" arg3'
然后您可以使用标准模块 shlex 将其正确拆分为三个参数
import shlex
shlex.split('arg1 "Hello world" arg3')
['arg1','Hello World','arg3'].
普通 command.split(" ")
会错误地给出四个参数
['arg1','"Hello','World"','arg3']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。