Как открыть временный файл программой по умолчанию на python?

К примеру во временный файл поместил QR-code, как его показать (открыть в программе по умолчанию)?
os.startfile() - выдает ошибку: "ValueError: startfile: embedded null character in filepath"
В связи с данными ответами - уточню, вопрос как открыть именно временный файл! А не как сохранить файл и открыть его ...

import qrcode
import io
import os

data = 'Hello World!'
img = qrcode.make(data)
io_data = io.BytesIO()
img.save(io_data, 'png')
tmp_file = io_data.getvalue()
print(tmp_file)

# Открыть временный файл в программе по умолчанию
os.startfile(tmp_file)

Ответы (1 шт):

Автор решения: CrazyElf

Используйте библиотеку tempfile:

from tempfile import NamedTemporaryFile

with NamedTemporaryFile(delete=False) as f:
   ...

И дальше работайте с полученным временным файлом - пишите туда ваш код, показывайте его, и не забудьте потом удалить этот файл. Примерно так, если я правильно всё понимаю:

import qrcode
import io
import os
from tempfile import NamedTemporaryFile

data = 'Hello World!'
img = qrcode.make(data)
with NamedTemporaryFile(suffix='.png', delete=False) as tmp_file:
    img.save(tmp_file, 'png')
    print(tmp_file.name)
    tmp_file_name = tmp_file.name

# Открыть временный файл в программе по умолчанию
os.startfile(tmp_file_name)

# Удалить временный файл
os.unlink(tmp_file_name)
→ Ссылка