读取文件的MemoryObject中的问题

时间:2019-01-09 08:29:31

标签: python python-3.x

  • 我有一个读取文件MemoryObject的函数。它正在读取大多数文件,但对于一个文件,它正在引发UnicodeDecodeError

这是我的代码

def read(file):
    """

    :param file: File Memory Object (submitted from POST)
    :return: File Iterable object
    """

    file = StringIO(file.read().decode())
    return csv.DictReader(file, delimiter=',')
  • File,没有问题。
  • File,这是很棘手的问题。

完全错误如下:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte

  • 用户提出类似错误的其他问题。他们使用open()来简化文件,但是我已经简化了MemoryObject,所以不能使用open()

1 个答案:

答案 0 :(得分:1)

您的file已经以二进制模式打开:decodebytes而非str的一种方法。

对于您的问题,encoding的{​​{1}}和errors参数的作用与bytes.decode相同。您可以应用适当的编码,也可以忽略错误:

open

请注意,您必须知道编码,或者通过忽略它们来抑制错误。您可以尝试不同的编码来找到有效的编码,但是最后您必须知道数据的含义。