我从imagenet文件提供的网址中使用wget命令下载了大量文件(here是汽车图片的一个示例)。但是当我检查我的文件时,我发现很多文件都存在错误的扩展名。例如,在文件中,扩展名为“.jpg”的文件实际上是文本文件。而且我知道--adjust-extension可能只适用于.html和.css文件。
所以我的问题是这些文件:1。我怎样才能恢复文件的扩展名(包括.jpg,.txt,.png,.html等)? 2.某些图片可能不止一次下载,如何删除重复项?
如果可以在python中完成也没关系。 提前谢谢。
答案 0 :(得分:2)
您可以使用python-magic https://github.com/ahupp/python-magic或filemagic https://pypi.python.org/pypi/filemagic之类的软件包,它们提供基于内容识别文件的方法。 unix file
命令还可以使用--mime-type标志来查找文件类型。
对于重复项,有很多实用程序可以执行此操作,但是在python中执行此操作会是这样的:
import os, hashlib
def remove_dupes(dir):
unique = set()
for filename in os.listdir(dir):
if os.path.isfile(filename):
filehash = hashlib.sha1(file(filename).read()).hexdigest()
if filehash not in unique:
unique.add(filehash)
else:
os.remove(filename)
答案 1 :(得分:1)
您可以使用file
程序根据文件内容而不是文件名来确定文件类型。 File附带了几乎所有版本的linux和unix,包括BSD和OSX。如果您使用Windows,我认为它包含在Cygwin中。
使用标记-i
,您将获得输出作为mimetype,并且可以使用标准库中的mimetypes
模块将mimetype映射到正确的文件扩展名。这适用于许多文件类型。
此示例在linux中使用python 3.它将输出当前目录中的每个文件以及可能的文件扩展名列表。
import os, mimetypes, subprocess
for filename in os.listdir():
mime = subprocess.check_output(['file', '-ib', filename]).decode().split(';')[0]
print(filename, mimetypes.guess_all_extensions(mime.strip()))