python - 使用列表调用时打印转义的 subprocess.run 字符串
问题描述
我正在使用 python 的 subprocess 模块进行系统调用。我正在将一个列表传递给 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)))
推荐阅读
- html - 使用自定义 css 登录页面
- javascript - 有没有办法在特定的 Adwords 广告系列 ID 之后过滤谷歌分析嵌入 API 查询?
- java - 步骤执行状态在 Spring Batch 中没有像 Finished
- java - 有没有比使用反射通过继承层次结构中的工厂方法实例化元素更好的方法?
- delphi - 如何检测 THTTPReqResp SOAP 请求的特定(超时)错误?
- matlab - 来自 tstatistics 向量的 pvalues 向量?
- mfc - 我在 VS-2019 中缺少 Add new item Add "MFC Class From Typelib"
- r - 如何通过多个列为每个 id 连接表
- image - SwiftUI 上的 Image 中的 frame() 是否会针对每个设备具有不同的大小?
- java - Java 优化读/写共享资源/内存位置,无需 Atomic API,例如 AtomicInteger