如何在内存中创建文件句柄并在Python中传递给外部命令



我有一个用于Linux的小型内部Python脚本,它在用户的$HOME目录中创建一个/HOME/user/environ_script.sh文件,然后通过

将环境加载到shell中

subprocess.call('bash --rcfile /home/user/environ_script.sh')

脚本工作得很好,但我想知道这是否可以在不写入磁盘的情况下完成?类似于bash进程替换命令

foo <(command)

通过临时文件句柄/dev/fdx为foo提供"命令"输出作为输入,因为foo需要一个文件句柄。

我认为您正在寻找的是一个命名管道,也就是说,可以用作文件的进程间通信机制,但不写入磁盘:

import subprocess
import os
fifo_name = 'my-bash.rc'
os.mkfifo(fifo_name)
try:
    process = subprocess.Popen(['bash', '--rcfile', fifo_name])
    with open(fifo_name, 'w') as f:
        f.write('echo "This is my-bash.rc"')
    process.wait()
finally:
    os.remove(fifo_name)
在上面的示例中,创建了一个命名管道并将其传递给子进程以打开它进行读取。在python端,打开相同的管道进行写入,写入一些内容,然后关闭管道。子进程接收管道的内容并继续,就像从实际文件中读取内容一样。

相关内容

最新更新