Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在内存中创建文件句柄并在Python中传递给外部命令_Python_File - Fatal编程技术网

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

如何在内存中创建文件句柄并在Python中传递给外部命令,python,file,Python,File,我有一个用于Linux的内部Python脚本,它在users$home目录中创建一个/home/user/environscript.sh文件,然后通过 subprocess.call('bash--rcfile/home/user/environscript.sh') 脚本工作得很好,但我想知道这是否可以在根本不写入磁盘的情况下完成?类似于bash的 进程替换命令 foo我认为您正在寻找的是一种进程间通信机制,可以用作文件,但不会写入磁盘: import subprocess import o

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

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

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


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端,打开相同的管道进行写入,写入一些内容并关闭管道。子流程接收管道的内容并继续,就像从真实文件读取内容一样。

查看模块?嗯。。正在读取tempfile.SpooledTemporaryFile()…相关:如果“bash--rcfile”可以从stdin读取,那么这将起作用,但它只接受一个文件句柄。我想我现在理解了您的要求,并相应地更新了我的响应。啊,太好了,忘记命名管道了。。这个解决方案非常有效,谢谢!