如何检查在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?