Skip to main content
 首页 » 编程设计

python之如何在内存中的文件上从 python 运行程序

2025年05月04日6mq0036

<分区>

我正在处理从远程数据库中提取的数千个打包在类似 zip 文件容器中的二进制文件。我需要使用 readelf 等工具分析这些二进制文件的内容,但我想避免产生不必要的 IO 将二进制文件写入磁盘。

有没有一种方法可以调用 subprocess.Popen 以便我可以将内存中的文件传递给命令将理解为文件的命令行实用程序?我已尝试将文件描述符分配给标准输入,但实用程序并未按预期从标准输入读取文件内容。

with zipfile.ZipFile(file,'r') as z: 
  with z.open(binary_path) as bin: 
    subprocess.Popen(['readelf','-d'],stdin=bin) 

我也试过直接将必要的参数设置为对文件描述符的引用,但这也被证明是徒劳的:

with zipfile.ZipFile(file,'r') as z: 
  with z.open(binary_path) as bin: 
    subprocess.Popen(['readelf','-d',bin]) 

我正在尝试的是可行的,还是我应该诉诸写入磁盘并从那里进行分析?

非常感谢!