Writing and Reading virtual files on Windows

287 Views Asked by At

As part of a Python project on Windows, I need to use small files as a means to communicate different processes. Since the external process must be called with subprocess.run(program, args...), I can't simply obtain a file descriptor for my file and pass it as a parameter to the external process. Instead, I need a file with a name which can be accessed from the normal filesystem. Thus, I would like a simple way to create a temporary file which is stored in memory (RAM) instead of disk, and which has a name other external processes can use to access it. In Linux, this can be achieved with the function os.mkfifo(). However, this function is not available in Windows.

At the moment, I am simply using the tempfile module to create a temporary file which is stored in disk and deleted once it is no longer needed. Here is a small reproducible example for my code:

import tempfile
import subprocess
import os

fd = tempfile.NamedTemporaryFile(mode="w+t", delete=False) # Obtain file descriptor
file_path = fd.name # Obtain file path

# Write data (encoded as str) to the file and close it
fd.write(data)
fd.close()

# Access this same file from an external process
output = subprocess.run( [program, file_path], stdout=subprocess.PIPE).stdout.decode('utf-8')

# Delete the file
os.remove(file_path)

print("External process output:", output)

So, my question is the following: How can I change this code so that in line fd.write(data) the data is written to RAM instead of disk?

0

There are 0 best solutions below