Skip to main content

exiftool 的 Python 包装器

项目描述

GitHub 页面 支持的 Python 版本 PyPI 总下载量 本月 PyPI 下载量

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

从源头

  1. 查看 github 存储库中的源代码

    • git clone git://github.com/sylikc/pyexiftool.git

    • 或者,您可以下载tarball

  2. 运行 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符合ExifToolExifToolHelper的严格测试标准 。可能有旧的、有缺陷的或失效的代码。

    • 这是最不完善的类和功能/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öpfertSeth PKolen Cheung

执照

PyExifTool 是免费软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,许可证的第 3 版,或(由您选择)任何更高版本,或BSD 许可证。

PyExifTool 的分发是希望它有用,但没有任何保证;甚至没有对适销性或特定用途适用性的默示保证。

有关更多详细信息,请参阅许可证

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

PyExifTool-0.5.4.tar.gz (45.3 kB 查看哈希

已上传 source

内置分布

PyExifTool-0.5.4-py3-none-any.whl (50.4 kB 查看哈希

已上传 py3