3

システムのデフォルトの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 ファイルを開くにはどうすればよいでしょうか。

編集:

ここで、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 です。または、プログラムの stdout を PDF プログラムの stdin に接続します (プログラムがサポートしている場合)。

于 2015-04-06T22:22:59.447 に答える