Я пишу Python script, который должен записать некоторые данные во временный файл, а затем создать подпроцесс, на котором запущена программа на С++, которая будет читать временный файл. Я пытаюсь использовать NamedTemporaryFile
для этого, но, согласно документам,
Можно ли использовать имя для открытия файла во второй раз, тогда как именованный временный файл все еще открыт, он варьируется в разных платформах (его можно использовать в Unix, он не может работать в Windows NT или более поздней версии).
И действительно, в Windows, если я очищаю временный файл после записи, но не закрываю его, пока я не хочу, чтобы он ушел, подпроцесс не может открыть его для чтения.
Я работаю над этим, создав файл с delete=False
, закрыв его перед тем, как развернуть подпроцесс, а затем вручную удалив его, как только закончите:
fileTemp = tempfile.NamedTemporaryFile(delete = False)
try:
fileTemp.write(someStuff)
fileTemp.close()
# ...run the subprocess and wait for it to complete...
finally:
os.remove(fileTemp.name)
Это кажется неэлегантным. Есть лучший способ сделать это? Возможно, способ открыть разрешения для временного файла, чтобы подпроцесс мог получить на нем?