如何在Python中将参数列表转换为单个字符串命令行?

4

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

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

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

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

如果您尝试此操作,则最后一个参数为AAA BBB而没有引号,但如果我尝试使用join重建命令行,则会得到错误的结果。

注意:我知道可以将命令行作为字符串获取,但在我的情况下,我不能依赖于它,我需要一种将参数列表转换为适当命令行的解决方案。


1
你想要 shlex.split 的反函数吗? - mgilson
你正在构建的字符串是用来做什么的? - mipadi
请注意:'argv'不会解包参数,是 '' 完成这个功能。所以你可以使用 a、aa、*hello 等。 - Rich Tier
2个回答

2

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

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

0

我想如果你不介意过多引用:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接