1

我正在编写一个脚本,用于通过 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'`

我做了一些研究。我知道我必须在里面写编码:将 文件数据流式传输到 mongodb gridfs 所以我也写了 fs.put(fileName,'UTF-8'),我读了这个页面: 编码 它说 ["encoding": encoding used for this文件。在 Python 2 中,写入文件的任何 unicode 都将转换为 str。在 Python 3 中,写入文件的任何 str 都将转换为字节。]

4

1 回答 1

0

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

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

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

因此,您只需要做:

fs.put(open('C:\\testStream5.ogg', mode='rb'))
于 2016-12-29T20:47:04.723 回答