TypeError:write()参数必须为str,而不是字节

时间:2019-01-03 13:01:50

标签: python typeerror

我在函数stream.write(self._header + b_("\n"))的第二行出现了一个错误,该错误引发了异常。到目前为止,我还无法调试问题,我使用的是python 3.(signpdf)。这是一个旧的python下载的软件包,但是在运行时似乎可以在python 2上运行。

object_positions = []
        stream.write(self._header + b_("\n"))
        for i in range(len(self._objects)):
            idnum = (i + 1)
            obj = self._objects[i]
            object_positions.append(stream.tell())
            stream.write(b_(str(idnum) + " 0 obj\n"))
            key = None
            if hasattr(self, "_encrypt") and idnum != self._encrypt.idnum:
                pack1 = struct.pack("<i", i + 1)[:3]
                pack2 = struct.pack("<i", 0)[:2]
                key = self._encrypt_key + pack1 + pack2
                assert len(key) == (len(self._encrypt_key) + 5)
                md5_hash = md5(key).digest()
                key = md5_hash[:min(16, len(self._encrypt_key) + 5)]
            obj.writeToStream(stream, key)
            stream.write(b_("\nendobj\n"))

1 个答案:

答案 0 :(得分:1)

您应该检查流的打开方式。我认为python 2和3之间的默认值已更改。