使用 python 将 .ogg 文件上传到 mongodb 的编码是什么?

what is the encoding of upload .ogg file to mongodb with python?

我正在编写一个脚本,用于通过 python 将 .ogg 文件上传到 mongodb。 我用的是python 3.6,最近在学习,所以没什么想法。请帮助我。

这是我的代码:

from pymongo import MongoClient
import gridfs
import os`

db=MongoClient().FypDatabase
fs=gridfs.GridFS(db,collection='video')
fs.put(open('C:\testStream5.ogg','UTF-8'))`

但是它说:

Traceback (most recent call last):
    File "C:\Users\chingyi\Desktop\testUp.py", line 16, in <module>
        fs.put(open('C:\testStream5.ogg','UTF-8'))
            ValueError: invalid mode: 'UTF-8'`

我做了一些研究。我知道我必须像这样在里面写编码: Streaming file data into mongodb gridfs 所以我写 fs.put(fileName,'UTF-8') 另外,我读了这个页面: encoding 它说 [ "encoding": 用于此文件的编码。在 Python 2 中,写入文件的任何 unicode 都将转换为 str。在Python3中,写入文件的任何str都将转换为字节。]

OGG Vorbis 文件是二进制文件 - 它们没有文本字符编码。

如果您的数据是 str,则只需向 GridFs 提供编码参数。同样,如果文件是文本并且不是您平台的默认编码,您只需要将编码传递给 open()

在您的情况下,当您处理二进制文件时,您需要将文件模式设置为二进制,这会否定编码参数。二进制只读文件模式给出为 rb.

因此,您只需要做:

fs.put(open('C:\testStream5.ogg', mode='rb'))