exiftool 的 Python 包装器
项目描述
PyExifTool 是一个 Python 库,用于与 Phil Harvey 的 ExifTool命令行应用程序的实例进行通信。
该库提供类exiftool.ExifTool以批处理模式运行命令行工具,并提供向该程序发送命令的方法,包括从一个或多个图像文件中提取元信息的方法。由于exiftool以批处理模式运行,因此只需要启动一个实例,并且可以重复用于许多查询。这比为每个查询启动一个单独的进程要高效得多。
<nav class="contents" id="contents" role="doc-toc">内容
</nav>示例用法
简单的例子:
import exiftool files = ["a.jpg", "b.png", "c.tif"] with exiftool.ExifToolHelper() as et: metadata = et.get_metadata(files) for d in metadata: print("{:20.20} {:20.20}".format(d["SourceFile"], d["EXIF:DateTimeOriginal"]))
有关更多示例和快速入门指南,请参阅文档
获取 PyExifTool
派皮
最简单:从官方PyExifTool PyPI安装一个版本
python -m pip install -U pyexiftool
从源头
查看 github 存储库中的源代码
git clone git://github.com/sylikc/pyexiftool.git
或者,您可以下载tarball。
运行 setup.py 从源代码安装模块
python setup.py install [--user|--prefix=<安装前缀>]
PyExifTool 依赖项
Python
PyExifTool 在Python 3.6+上运行。(如果您需要 Python 2.6 支持,请使用 v0.4.x 版本)。PyExifTool 已经在 Windows 和 Linux 上进行了测试,并且可能还可以在其他类 Unix 平台上运行。
菲尔·哈维的 exiftool
要使 PyExifTool 起作用,系统上必须存在exiftool命令行工具。如果exiftool不在PATH上,您可以使用ExifTool(executable=<full path>)指定它的完整路径名。
PyExifTool 需要12.15 的最低版本(这是 exiftool 的第一个生产版本,具有允许与-echo3和-echo4参数结合使用的退出状态检查的选项)。
检查您的exiftool版本:
exiftool -ver
视窗/苹果机
Windows/Mac 用户可以下载最新版本的 exiftool:
https://exiftool.org
Linux
大多数当前的 Linux 发行版都有一个可以安装exiftool的包。不幸的是,有些没有最低要求的版本,在这种情况下,您将不得不从 source 构建。
Ubuntu
sudo apt install libimage-exiftool-perl
CentOS/RHEL
yum install perl-Image-ExifTool
文档
当前文档可在sylikc.github.io 获得。
http://sylikc.github.io/pyexiftool/
封装结构
PyExifTool 的设计考虑了灵活性和可扩展性。该库由几个类组成,每个类都具有越来越多的功能。
基础ExifTool类包含以最基本的方式公开的核心功能,并且每个后续类都继承和添加功能。
exiftool.ExifTool是具有与 PH 的 ExifTool 进程接口的核心逻辑的基类。它仅包含核心功能,没有多余的绒毛。提供的主要方法是execute()和execute_json(),它们允许与底层 exiftool 进程直接交互。
该 API 被认为是稳定的,在未来的版本中应该不会有太大变化。
exiftool.ExifToolHelper公开了一些最常用的功能。它重载了一些继承的函数以将常见错误转化为警告,并添加逻辑以使 exiftool.ExifTool更易于使用。例如,ExifToolHelper提供包装函数来获取元数据,并在 exiftool 实例未运行时自动启动它(而不是引发异常)。 ExifToolHelper演示了如果您的项目需要 ExifTool 不直接提供的自定义,如何根据您的喜好扩展ExifTool。
未来版本可能会添加更多方法和/或轻微的 API 调整。
exiftool.ExifToolAlpha进一步扩展了ExifToolHelper并包含了一些社区贡献的、经过不太好的测试的方法。这些方法以前是由各种社区贡献者临时添加的,但不再经受当前设计的严谨性。 ExifToolAlpha不符合ExifTool或ExifToolHelper的严格测试标准 。可能有旧的、有缺陷的或失效的代码。
这是最不完善的类和功能/API 可以在任何版本上更改/添加/删除。
注意:公开的方法可以随时更改/删除。
如果您在项目中使用这些方法中的任何一种,请提交问题以开始讨论如何使这些功能更加健壮,并使其进入ExifToolHelper。(将ExifToolAlpha视为有关如何扩展ExifTool的想法,其中可能有朝一日将其纳入ExifToolHelper类的新功能。)
历史简介
PyExifTool 最初是由Sven Marnach在 2012 年开发的,用于回答 stackoverflow 的一个问题Call exiftool from a python script? . 随着时间的推移,Sven 改进了代码,添加了测试、文档和一系列改进。虽然 PyExifTool 越来越受欢迎,但 Sven从未打算将其作为一个活跃的项目来维护。原始存储库最后一次更新是在 2014 年。
多年来,提交了许多问题,并在停滞的存储库上打开了几个 PR。2019 年初,Martin Čarnogurský从 2014 年的代码创建了一个 PyPI 版本,并进行了一些小的更新。巧合的是,在 2019 年年中,Kevin M (sylikc)分叉了原始存储库,并开始合并 PR 和 Sven 的问题/PR 页面上报告的问题。
在 2019 年末和 2020 年初,开始讨论 为活动分叉提供可见性。有过关于转让原始存储库所有权的对话,有一个与 PyExifTool 用户沟通的协调计划等等,但它从未实现。
Kevin M (sylikc) 于 2021 年初向 PyPI 存储库发布了第一个版本。同时,围绕 Deprecating Python 2.x 兼容性和重构代码和类展开了讨论。
最新版本是所有这些讨论、设计和开发的结果。特别感谢社区贡献,特别是 Jan Philip Göpfert、Seth P和Kolen Cheung。
执照
PyExifTool 是免费软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,许可证的第 3 版,或(由您选择)任何更高版本,或BSD 许可证。
PyExifTool 的分发是希望它有用,但没有任何保证;甚至没有对适销性或特定用途适用性的默示保证。
有关更多详细信息,请参阅许可证。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
PyExifTool -0.5.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d14244ded3cafb0db01ca8bd85453ed99b0d9a0bcaca6ba3106ff662b580c890 |
|
MD5 | 99c4b4493d265689c41516ee7799e3fd |
|
布莱克2-256 | f83a3b756c2403d8d364f1662f836d57e976760f1a641e03cfa35104f5373992 |
PyExifTool -0.5.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a223852c8899cb118858439b610c820cc5284843f017e42c50d0f13099d6ea15 |
|
MD5 | 44b1e0527a56e59ed4695dde4ed8dd75 |
|
布莱克2-256 | be4aaff279a4608161cbe8d7e2bf0ac53fe31a5723032159d5901d0bdf845ee6 |