python - 使用 argparse 解析字符串

标签 python 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()中使用列表

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/

相关文章:

c# - 如何使用python代码创建一个通用的windows平台应用程序?

python:停止导入的模块解析命令行参数

python - 使用 argparse 中的子命令创建解析器,自定义位置参数

python - 如何在 Python 中为 argparse 设置自定义输出处理程序?

python - pandas 与 numpy 的不同标准

python - google-app-engine:如何将对象列表作为另一个类中的属性?

python - setuptools 可以与 python 3.2.x 一起使用吗

Python argparse 解析无法识别的参数

python - Python 中无限数量的命令行参数

python - 如何阻止 argparse 接受缩写的 "long name"标志? ( python 2.7)