如何从python中的参数列表格式化shell命令行

Cla*_*diu 6 python shell formatting command-line command-line-arguments

我有一个参数列表,例如["hello", "bobbity bob", "bye"].我将如何格式化这些以便将它们适当地传递给shell?

错了:

>>> " ".join(args)
hello bobbity bob bye
Run Code Online (Sandbox Code Playgroud)

正确:

>>> magic(args)
hello "bobbity bob" bye
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 14

您可以使用未记录但长期稳定的(至少从2004年10月开始)subprocess.list2cmdline:

In [26]: import subprocess
In [34]: args=["hello", "bobbity bob", "bye"]

In [36]: subprocess.list2cmdline(args)
Out[36]: 'hello "bobbity bob" bye'
Run Code Online (Sandbox Code Playgroud)