晚上好。我正在考虑开发一些代码,这些代码将从 JPEG 图像中收集 EXIF 数据并使用 Python v2.x 将其存储在 MySQL 数据库中。绊脚石在于 JPEG 分散在多个子目录和根目录中的更多子目录中例如 200 个 JPEG 可以存储在 root > subroot > subsubroot1 中,另外 100 个 JPEG 可以存储在 root > subroot > subroot2 中。一旦识别出所有图像,它们将被扫描并在添加到 MySQL 表之前提取它们各自的 EXIF 数据。
目前我正处于计划阶段,但我只是想知道,执行递归搜索的最有效和最pythonic的方法是什么?我正在寻找扫描根目录并将任何新识别的子目录附加到列表中,然后扫描列表中的所有子目录路径以查找更多子目录,直到我拥有所有目录的总列表。尽管恕我直言,这似乎是一种笨拙的方式并且有点重复,所以我认为可能有一种更面向对象的方式来执行此功能。
同样,我只想将新信息添加到我的 MySQL 表中,那么确定条目是否已经存在的最有效方法是什么?表中的文件名和 JPEG 文件名都将是其 MD5 哈希值。我正在考虑扫描代码开头的表格并将所有文件名放在一个集合中,因此,在扫描新的 JPEG 之前,如果集合中已经存在一个条目,则无需提取 EXIF 并继续下一张照片。然而,这是一种有效的方法,还是在遇到新图像时扫描 MySQL 表会更好?我预计 set 方法可能是最有效的,但是该表最终可能包含数千万个条目,因此将这些条目的文件名添加到集合(易失性内存)中可能不是最好的主意。
谢谢各位。