如何在 PyMongo 的 GridFS 中打开文件的 GridOut 实例?
Posted
技术标签:
【中文标题】如何在 PyMongo 的 GridFS 中打开文件的 GridOut 实例?【英文标题】:How can I open a GridOut instance of a file in a GridFS in PyMongo? 【发布时间】:2011-12-22 22:33:08 【问题描述】:假设我有一个 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)
但是最后一步怎么做,也就是怎么在系统默认的pdfs应用中打开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)))
【问题讨论】:
你有没有发现其他东西? 您找到解决此问题的方法了吗? user3404455提问 【参考方案1】:您只能使用 IPC(进程间通信)。根据定义,Python GridOut 不是 IPC。文件系统是IPC。或者将程序的标准输出连接到 PDF 程序的标准输入(如果程序支持)。
【讨论】:
以上是关于如何在 PyMongo 的 GridFS 中打开文件的 GridOut 实例?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 PyMongo 和 Bottle 显示来自 MongoDB 数据库的图像?