我正在处理从远程数据库中提取的数千个包装在类似 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])
我正在尝试的是可能的,还是我应该求助于写入磁盘并从那里分析?
非常感谢!