将带有空格字符的参数传递给argparse

时间:2016-01-04 18:03:47

标签: python command-line-arguments argparse

我的Python脚本:

import os
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--l', nargs='+', help='list = [title, HTML]')
args = parser.parse_args()
print args.l

当我在Keyboard Maestro中执行脚本时,我这样做:

python  ~/Desktop/save_html.py -l $KMVAR_javascriptTITLE

它正在工作,但是argparse正在使用空格解析任何内容。

First Name变为['First', 'Last']。如果我理解正确,arparse正在阅读我的命令,如:

python ~/Desktop/save_html.py -l First Last

当我真正想要的是:

python ~/Desktop/save_html.py -l "First Last"

如何将变量传递给argparse并将其读取为1个字符串?

2 个答案:

答案 0 :(得分:2)

将我的评论更改为答案

如果你做python ~/Desktop/save_html.py -l "$KMVAR_javascriptTITLE"怎么样?必要时逃避报价

答案 1 :(得分:1)

您可以使用CustomAction执行此操作:

import os
import argparse


class CustomAction(argparse.Action):
    def __call__(self, parser, namespace, values, option_string=None):
        setattr(namespace, self.dest, " ".join(values))


parser = argparse.ArgumentParser()
parser.add_argument('-l', '--l', action=CustomAction, type=str, nargs='+', help='list = [title, HTML]')
args = parser.parse_args()
print args.l