【问题标题】:How to converts a list of arguments into single string command line in Python? [duplicate]如何在 Python 中将参数列表转换为单个字符串命令行? [复制]
【发布时间】:2012-11-08 17:24:03
【问题描述】:

可能重复:
What’s the reverse of shlex.split?

如何将命令行参数列表(如argv)转换为单个命令行字符串?

" ".join(argv) 不是正确的解决方案,因为它不会正确地转义带有空格的字符串。

示例:./test.py -v --simulate --action removePage --title "AAA BBB"

如果你尝试这个,最后一个参数是 AAA BBB 不带引号,但如果我尝试使用 join 重建命令行,我会得到错误的结果。

注意:我知道我可以将命令行作为字符串获取,但就我而言,我不能依赖它,我需要一个将参数列表转换为正确命令行的解决方案。

【问题讨论】:

  • 所以你想要shlex.split的倒数?
  • 你想对你正在构建的字符串做什么?
  • 注意:'argv' 不会解压缩参数 - 它是 '' 执行此操作。所以你可以做 *a、*aa、*hello 等。

标签: python escaping argv


【解决方案1】:

使用 Python 3.3,您可以尝试使用 shlex.quote(抱歉,我无法检查):

' '.join(shlex.quote(arg) for arg in argv)

【讨论】:

    【解决方案2】:

    我想如果你不介意无偿引用:

    " ".join('"%s"'%x.strip().replace('"',r'\"') for x in lst)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2011-11-23
      • 2020-10-09
      • 2019-12-02
      • 2014-12-15
      • 1970-01-01
      • 2013-02-28
      相关资源
      最近更新 更多