Как я могу открыть экземпляр GridOut файла в GridFS в PyMongo? - PullRequest
3 голосов
/ 06 ноября 2011

Допустим, у меня есть файл 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)))

1 Ответ

0 голосов
/ 07 апреля 2015

Вы можете использовать только IPC (межпроцессное взаимодействие).Python GridOut не является IPC по определению.Файловая система IPC.Или подключите стандартный вывод вашей программы к стандартному выводу вашей PDF-программы (если программа поддерживает).

...