如何在PyMongo中的GridFS中打开文件的GridOut实例?

时间:2011-11-06 04:44:19

标签: python mongodb pymongo gridfs launching-application

假设我有一个pdf文件,我想在系统的pdf默认应用程序的Python脚本中打开。

首先,如果它保存在常规文件系统中,我只需打开它:

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文件?

编辑:

现在我将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 :(得分:0)

您只能使用IPC(进程间通信)。根据定义,Python GridOut不是IPC。文件系统是IPC。或者将程序的stdout连接到PDF程序的标准输出(如果程序支持)。