python – 创建并管道类似文件的对象作为命令的输入

如果可能的话,我正在寻找更好的方法来做到这一点:

import subprocess

f = open('temp.file', 'w+')
f.write('hello world')
f.close()

out = subprocess.check_output(['cat', 'temp.file'])

print out

subprocess.check_output(['rm', 'temp.file'])

在这个例子中,我正在创建一个文件并将其作为输入传递给cat(实际上它不是我正在运行的猫,而是一些其他解析输入pcap文件的程序).

我想知道的是,在Python中是否有一种方法我可以使用一些内容创建一个“类文件对象”,并将这个类文件对象作为输入传递给命令行程序.如果有可能,我认为它比将文件写入磁盘然后删除该文件更有效.

最佳答案
check_output采用stdin输入参数来指定类似文件的对象以连接到进程的标准输入.

with open('temp.file') as input:
    out = subprocess.check_output(['cat'], stdin=input)

而且,没有必要支持运行rm;您可以直接从Python中删除该文件:

os.remove('temp.file')

转载注明原文:python – 创建并管道类似文件的对象作为命令的输入 - 代码日志