【问题标题】:module base64.decode yields corrupt pdf base64 encoded file模块 base64.decode 产生损坏的 pdf base64 编码文件
【发布时间】:2013-11-13 10:25:24
【问题描述】:

你好,当我尝试像这样解码图像时

“example_label.b64”文件在这里(http://ge.tt/27odGly/v/0

我看到损坏的 pdf,看起来 base64 解码损坏了这个文件。

你能帮帮我吗?

这里是代码示例。

import base64
with open('example_label.b64','r+') as f:
    data = f.read()
    f.close()
# data = data.decode('base64')
#or
data = base64.b64decode(data)
with open('example_label.pdf','w+') as f:
    f.write(data)
    f.close()

谢谢。

【问题讨论】:

  • 能否提供原始pdf文件的md5校验和?
  • 解码后的 pdf 似乎在我的机器上
  • 这里是原始文件的 bd9a4e16d45fe01bfc77a2af6afe1b8b md5
  • 你使用Linux?我使用 Windows 8 和 Python 2.7.3 x32。也许这是问题?
  • 是的,Python 中的 Windows 文本模式文件的问题;看我的回答。

标签: python base64


【解决方案1】:

您的写入模式应指定二进制,否则您将面临换行转换的风险,具体取决于您的平台。那是

open('example_label.pdf', 'wb')

文件在我的系统上解码得很好,产生的校验和为

$ md5sum example_label.pdf 
bd9a4e16d45fe01bfc77a2af6afe1b8b  example_label.pdf
$ sha1sum example_label.pdf 
a9b77217793ef05f212b0619248480411f6ed4a1  example_label.pdf

并且是一个带有虚拟地址的美国邮政服务标签。

【讨论】:

  • 换行符转换非常方便,但他们从不应该将其设为默认值。
猜你喜欢
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
相关资源
最近更新 更多