3

假设我有一个 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)))
4

1 回答 1

0

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

于 2015-04-06T22:22:59.447 回答