【问题标题】:Parsing a string using argparse使用 argparse 解析字符串
【发布时间】:2021-07-25 20:23:24
【问题描述】:

所以我希望 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

【问题讨论】:

  • 你总是可以把它放在sys.argvargparser中使用它-sys.argv = ["script", "arg1", "arg2", "arg3"]-如果你想append()从命令行获得的参数的一些选项,它会很有用.
  • 我不确定,但您可以使用parser.parse_args( ["script", "arg1", "arg2", "arg3"] )。都应该在文档中
  • 使用 parse_args() 在 argparse docs.python.org/3.8/library/… 的文档中阅读有关此内容的许多示例
  • 感谢它的工作,使用parser.parse_args( ["script", "arg1", "arg2", "arg3"] ) 正是我想要的。一直在这里docs.python.org/3.8/library/…

标签: python argparse


【解决方案1】:

您可以直接在parse_args() 中使用列表 - 通常第一个元素是脚本的名称,但您可以使用任何字符串

args = parser.parse_args( ["script.py", "arg1", "arg2", "arg3"] )

或者你可以使用你的线路

command = "arg1 arg2 arg3"
args = parser.parse_args( ["script.py"] + command.split(" ") )

你总是可以把它放在sys.argvparser 应该使用它

import sys

sys.argv = ["script", "arg1", "arg2", "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']

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 2017-08-31
    • 2012-08-06
    • 2011-10-23
    • 2011-10-14
    • 2011-07-14
    • 2020-04-11
    • 2014-07-01
    相关资源
    最近更新 更多