【问题标题】:Passing an argument with whitespace characters into argparse将带有空格字符的参数传递给 argparse
【发布时间】:2016-04-08 09:58:46
【问题描述】:

我的 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 个字符串?

【问题讨论】:

    标签: python command-line-arguments argparse


    【解决方案1】:

    将我的评论更改为答案

    如果你做python ~/Desktop/save_html.py -l "$KMVAR_javascriptTITLE"怎么样?必要时转义引号

    【讨论】:

      【解决方案2】:

      您可以使用 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
      

      【讨论】:

        猜你喜欢
        • 2017-10-10
        • 2012-11-13
        • 2017-09-04
        • 1970-01-01
        • 2016-09-08
        • 2011-12-29
        • 2017-04-25
        • 2017-05-07
        • 2018-06-27
        相关资源
        最近更新 更多