打印转义的子进程.使用列表调用时运行字符串



我正在使用python的子流程模块进行系统调用。我正在将一个列表传递给subprocess.run,以便subprocess处理转义我的参数。

result = subprocess.run([
'curl',
'--form', 'measurement=river_discharge',
'--form', 'file=@/my/file/path',
'http://my_server.com/webform'
], check=True)

我想打印子流程中的转义字符串,以便复制粘贴它。运行命令后的result.args是我提交的相同列表。有没有办法让转义字符串子进程从这个列表中生成?

在我的例子中,我要找的字符串应该是类似的东西

curl 
--form measurement=river_discharge 
--form file=@/my/file/path 
http://my_server.com/webform

subprocess实际上并没有生成转义字符串。在执行命令时,列表中的每个元素都只是作为一个单独的参数传递。这里没有空壳,所以没有必要逃避任何事情。

但是,您可以使用shlex.quote()来模拟必要的引用。

import shlex
print(' '.join(map(shlex.quote, result.args)))

最新更新