4

可能重复:
shlex.split 的反面是什么?

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

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

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

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

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

4

2 回答 2

2

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

' '.join(shlex.quote(arg) for arg in argv)
于 2012-11-08T17:36:14.227 回答
0

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

" ".join('"%s"'%x.strip().replace('"',r'\"') for x in lst)
于 2012-11-08T17:26:36.767 回答