Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python保存存储在Mongodb GridFS中的pdf文件_Python_Mongodb_Pymongo_Gridfs - Fatal编程技术网

使用Python保存存储在Mongodb GridFS中的pdf文件

使用Python保存存储在Mongodb GridFS中的pdf文件,python,mongodb,pymongo,gridfs,Python,Mongodb,Pymongo,Gridfs,我已经上传了一些PDF,PNG文件到mongodb的本地实例。我错误地删除了这些文件,无法再使用常规恢复选项恢复它们。但是,它们在我的本地mongodb数据库中。如何将它们以原始格式保存到计算机上 我知道: import pymongo as pym import gridfs def connectToDb(): client = pym.MongoClient('mongodb://localhost:27017/') db = client.questionbank

我已经上传了一些PDF,PNG文件到mongodb的本地实例。我错误地删除了这些文件,无法再使用常规恢复选项恢复它们。但是,它们在我的本地mongodb数据库中。如何将它们以原始格式保存到计算机上

我知道:

import pymongo as pym
import gridfs

def connectToDb():
    client = pym.MongoClient('mongodb://localhost:27017/')
    db = client.questionbank
    collectn = db.questionbank
    fs = gridfs.GridFS(db)
    return db, collectn, fs

db, collectn, fs = connectToDb()

filelist = list( db.fs.files.find({}, {"_id": 1, "filename": 1}) )
fileid = filelist[0]['_id']
fobj = fs.get(fileid)

## I don't know what to do after this. I think I cannot use read since I don't 
## want the string. I want to save the pdf file as a pdf file.

任何帮助都将不胜感激。提前谢谢。

好的,我自己想出来的。可通过以下方式完成:

在上述代码中添加以下行:

f = open('tempfigfile.pdf', 'wb')
f.write(fobj.read())
f.close()

这将文件保存为tempfigfile.pdf。

此代码将从mongodb gridfs将所有文件保存到您的本地文件夹

i=0 
cursor=fs.find()
while(i < cursor.count()):
    fi=cursor.next()
    with open("C:\\localfolder\\"+fi.filename,"wb") as f:
        f.write(fi.read())
        f.closed
        i=i+1
i=0
cursor=fs.find()
而(i