如何从类似字节的对象中知道文件格式? 我使用的



ORACLE数据库以BLOB类型存储PDF或ZIP格式的文件。我想保存这些文件。但是,我不知道如何识别它何时是 PDF,何时是 ZIP?是否可以检查 BLOB 存储在其中的文件格式?

以下是保存文件的简单write_file方法:

def write_file(data, filename):
with open(filename, 'wb') as f:
f.write(data)

在这里,我使用光标获取适当的 BLOB,并使用write_file方法来保存文件:

firstRow = cur.fetchone()
write_file(firstRow[0].read(), "blah.zip")

如何识别何时为zip,何时为pdf?

您可以尝试通过检查读取的字节来检查文件签名。

据此: https://en.wikipedia.org/wiki/List_of_file_signatures

1( 以"50 4B 03 04"或"50 4B05 06"或"50 4B 07 08"开头的zip文件

2( pdf 文件以"25 50 44 46 2d"开头

因此,您可以检查前几个字节并检查它们是否等于文件签名 - 并在此基础上确定文件类型。

最新更新