如何检查在python中没有扩展名的文件类型?

我有一个文件夹充满文件,这些文件没有扩展名。 我如何检查文件类型? 我想检查文件类型并相应地更改文件名。 假设一个函数filetype(x)返回像png这样的文件类型。 我想做这个:

files = os.listdir(".")
for f in files:
    os.rename(f, f+filetype(f))

我该怎么做呢?


有些Python库可以根据文件内容识别文件(通常是头/幻数),并且不依赖文件名或扩展名。

如果你正在寻找许多不同的文件类型,你可以使用python-magic 。 这只是一个Python已经建立的magic库的绑定。 这在我所做的有限使用中有很好的声誉和(小的认可),它已经很稳固。

还有更多专门文件类型的库。 例如,Python标准库具有imghdr模块, imghdr为图像文件类型执行相同的操作。


Python Magic库提供了您所需的功能。

您可以使用pip install python-magic来安装库,并按如下所示使用它:

>>> import magic

>>> magic.from_file('iceland.jpg')
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file('iceland.jpg', mime=True)
'image/jpeg'

>>> magic.from_file('greenland.png')
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file('greenland.png', mime=True)
'image/png'

在这种情况下,Python代码正在调用libmagic,这与* NIX file命令使用的是相同的库。 因此,这与子流程/基于shell的答案完全相同,但没有这种开销。


在Unix和Linux上有file命令来猜测文件类型。 甚至有一个Windows端口。

从手册页:

文件测试每个参数以尝试对其进行分类。 有三组测试,按此顺序执行:文件系统测试,幻数测试和语言测试。 成功的第一个测试会导致打印文件类型。

您需要使用subprocess模块运行file命令,然后解析结果以找出扩展名。

编辑:忽略我的答案。 改用Chris Johnson的回答。

链接地址: http://www.djcxy.com/p/46797.html

上一篇: How to check type of files without extensions in python?

下一篇: Determine the encoding of text in Python