2011-11-06 83 views
3

比方說,我有一個pdf文件,我想在系統的pdf默認應用程序的Python腳本中打開。如何在PyMongo的GridFS中打開文件的GridOut實例?

首先,如果它保存在普通文件系統,我只想開這樣的:

import os 
os.system('Open /Users/Doe/Documents/mypdf.pdf') 

其次,如果我想存儲在一個GridFS的PDF文件,我可以寫像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))) 
+0

你有沒有發現別的東西? – Jeff

+0

您是否找到解決此問題的解決方案? *提問者:[user3404455](http://stackoverflow.com/users/3404455/user3404455)* –

回答

0

您只能使用IPC(進程間通信)。根據定義,Python GridOut不是IPC。文件系統是IPC。或者將程序的stdout連接到PDF程序的標準輸入(如果程序支持)。

相關問題