如何使用pymongo从mongodb获取文件对象?

杰夫

我目前正在使用:

some_fs = gridfs.GridFS(db, "some.col")
fs_file = some_fs.get(index)

得到一个<class 'gridfs.grid_file.GridOut'>对象。

如何获取文件对象,或者如何将其转换为python文件对象?为此,我是否需要另存为临时文件?

编辑:

这是我正在使用的完整代码:

FFMPEG_BIN = "ffmpeg.exe"
some_fs = gridfs.GridFS(db, "some.col")
vid_id = ObjectId("5339e3b5b322631b544b2338")

vid_file = some_fs.get(vid_id)
raw =  vid_file.read()
print type(vid_file), type(raw)

with open(raw, "rb") as infile:
    pipe = sp.Popen([FFMPEG_BIN,
                 # "-v", "quiet",
                 "-y",
                 "-i", "-",
                 "-vcodec", "copy", "-acodec", "copy",
                 "-ss", "00:00:00", "-t", "00:00:10", "-sn",
                 "test.mp4" ]
                ,stdin=infile, stdout=sp.PIPE
)
pipe.wait()

输出:

[2014-03-31 19:03:00] Connected to DB.
<class 'gridfs.grid_file.GridOut'> <type 'str'>
Traceback (most recent call last):
  File "C:/dev/proj/src/lib/ffmpeg/win/test.py", line 19, in <module>
    with open(raw, "rb") as infile:
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
尼克·伦佩尔

编辑:也许GridOut不是python文件对象的正确实现我的最后建议是尝试将内存文件与StringIO一起使用

import StringIO

FFMPEG_BIN = "ffmpeg.exe"
some_fs = gridfs.GridFS(db, "some.col")
vid_id = ObjectId("5339e3b5b322631b544b2338")

vid_file = some_fs.get(vid_id)

# Should be a proper file-like object
infile =  StringIO.StringIO(vid_file.read())

pipe = sp.Popen([FFMPEG_BIN,
    # "-v", "quiet",
    "-y",
    "-i", "-",
    "-vcodec", "copy", "-acodec", "copy",
    "-ss", "00:00:00", "-t", "00:00:10", "-sn",
    "test.mp4" ]
    ,stdin=infile, stdout=sp.PIPE
)
pipe.wait()

...

infile.close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用pyMongo在Flask中获取MongoDB数据

如何使用JQuery从外部文件获取对象?

如何使用File对象获取文件目录?

如何使用pymongo获取数组的所有对象中特定元素的总和

如何使用pymongo在mongodb中查询日期?

如何使用 PyMongo 识别 MongoDB 文本索引

如何使用pymongo编辑mongoDB中的数据

如何使用 Pymongo 在文档中插入对象?

使用 pymongo 在 Django 中通过嵌套对象键范围查询 MongoDB 以获取具有跳过/限制的嵌套数组

mongodb如何获取$ type“对象”

如何从mongodb获取对象ID

如何从 Mongodb 获取 Document 对象

如何使用mongoDB在mongoose中获取特定对象?

使用Pymongo / MongoDB迭代游标对象的有效方法

使用mongoose从mongodb获取对象

使用Pymongo从Mongodb中获取数据并用作WS

如何通过pymongo将.py文件上传到mongodb中

如何使用 configparser 对象获取配置文件路径

如何使用React JS从JSON文件获取嵌套对象

如何使用pymongo在mongodb上使用多个查询?

如何使用nodejs和mongodb获取位于另一个对象内部的对象?

如何使用mongodb或pymongo搜索部分匹配文本

如何使用pymongo迭代或删除MongoDb数组列表项?

如何使用PyMongo在MongoDB中创建新数据库?

如何使用 Pymongo 和 MongoDB 返回特定字段?

如何使用PyMongo删除MongoDB数据库?

如何使用Pymongo在MongoDB中选择单个字段?

如何使用 pymongo 创建 MongoDB 时间序列集合

如何使用pymongo更新Mongodb中的多个值?