Python: 二进制文件转gz文件再转jpg扩展,最后返回原始二进制文件

0 投票
2 回答
1843 浏览
提问于 2025-04-16 20:27

我想在Python中做以下事情:

  1. 拿一个二进制(可执行的)文件
  2. 把它变成一个用gzip压缩的zip文件(后缀是gz)
  3. 然后再加上jpg的后缀

之后我还想把它恢复成原来的样子(去掉gz和jpg的后缀)。

我的想法是通过GMail的SMTP发送这些二进制文件,然后再通过IMAP取回来,最后处理成它们的原始形式(第一步)。

2 个回答

2

你可以使用 gzip 来压缩文件,还可以用 os.rename 来更改文件名。在你的情况下,你可以直接使用 gzip 并且一开始就把文件保存为 .jpg 格式。

import gzip

# write compressed file
with gzip.open('my_file.jpg', 'wb') as f:
    f.write(content)

# read it again
with gzip.open('my_file.jpg', 'rb') as f:
    content = f.read()
2

Python的gzipshutil库可以满足你的需求。

首先,你可以用它们来压缩可执行文件。

import gzip, shutil

src = open('executable', 'rb')
dest = gzip.open('executable.gz.jpg', 'wb')

shutil.copyfileobj(src, dest)

src.close()
dest.close()

然后,如果你想要恢复原来的文件,也可以做到。

import gzip. shutil

src = gzip.open('executable.gz.jpg', 'rb')
dest = gzip.open('executable', 'wb')

shutil.copyfileobj(src, dest)

src.close()
dest.close()

不过要注意,Gmail的MIME过滤器是根据内容来判断的,而不是文件的扩展名,所以它可能还是会阻止这个新文件。

撰写回答