如何使用python';使用预定义参数字符串解析args?

如何使用python';使用预定义参数字符串解析args?,python,argparse,Python,Argparse,我想使用pythons argparse模块来解析我的cli参数字符串。这适用于从终端传递的参数,但不适用于给定字符串 import argparse parser = argparse.ArgumentParser(description='Argparse Test script') parser.add_argument("param", help='some parameter') argString = 'someTestFile' print(argString) args =

我想使用pythons argparse模块来解析我的cli参数字符串。这适用于从终端传递的参数,但不适用于给定字符串

import argparse

parser = argparse.ArgumentParser(description='Argparse Test script')
parser.add_argument("param", help='some parameter')

argString = 'someTestFile'
print(argString)

args = parser.parse_args(argString)
如果运行此脚本,则会得到以下输出:

~/someTestFile
usage: argparsetest.py [-h] param
argparsetest.py: error: unrecognized arguments: o m e T e s t F i l e
~/someTestFile
以某种方式在
中进行了转换。如前所述,如果我从终端传递文件名,它就会工作

我可以想象,这与字符串编码有关。有人知道如何解决这个问题吗?

parser.parse_args()
需要一个与sys.argv[1://code>格式相同的序列。如果将字符串视为sys.argv序列,则会得到
['s','o','m','e','T','e','s','T','F','i','l','e']
's'成为相关参数,然后字符串的其余部分是不可解析的


相反,您可能希望传入
parser.parse_args(['someTestFile'])
就像默认的
sys.argv
是一个列表一样,您的参数也必须是一个列表

args = parser.parse_args([argString])
另一个选择是使用。如果您有真正的CLI参数字符串,则特别方便:

import shlex
argString = '-vvvv -c "yes" --foo bar --some_flag'
args = parser.parse_args(shlex.split(argString))

只需
split
您的命令字符串:

args = parser.parse_args(argString.split())
要展示的完整示例:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--dummy_opt', nargs='*', type=int, help='some ids')
    argString = "--dummy_opt 128 128"

    args = parser.parse_args(argString.split())

    print(args)
将输出:


名称空间(pic\u resize=[128,128])

您可能想看看。谢谢!这是非常有用的。现在我可以从命令行和其他python脚本运行了!非常有用