Допустим, у меня есть файл PDF, который я хочу открыть в скрипте Python в системном приложении по умолчанию для файлов PDF.
Во-первых, если он хранится в обычной файловой системе, я бы просто открыл его так:
import os
os.system('Open /Users/Doe/Documents/mypdf.pdf')
Во-вторых, если я хочу сохранить файл pdf в GridFS, я могу написать в GridFS так:
from pymongo import Connection
from gridfs import GridFS
db = Connection().text_database
fs = GridFS(db)
with open('/Users/Doe/Documents/mypdf.pdf') as mypdf:
oid = fs.put(mypdf)
Затем я могу прочитать файл так:
myfile = fs.get(oid)
Но как я могу сделать последний шаг, то есть, как я могу открыть файл PDF в системном приложении по умолчанию для файлов PDF?
EDIT:
Теперь я записываю экземпляр GridOut во временный файл, а затем открываю этот временный файл. Было бы неплохо пропустить этот дополнительный шаг записи в файловую систему.
import tempfile
temp_path = tempfile.mkdtemp()
with open(os.path.join(temp_path, myfile.filename), 'w') as f:
f.write(myfile.read())
os.system('open {}'.format(os.path.join(temp_path, myfile.filename)))