一个用于 Python 的 CMIS API 库,第 2 部分: 使用 Python 和 cmislib 构建真正的 ECM 工具
2010-05-05 00:00:00 来源:WEB开发网步骤 3:实现基本的 xcopy 逻辑
在这个步骤中,您将遍历源文件系统树。您将寻找需要复制的文件,在目标文件系统中创建任何必要的子目录,以便复制后的层次结构能够匹配。要遍历源目录结构,需要使用 Python 模块 os 中的 walk() 方法。这将为源文件系统树中的每个目录返回一个 “三元组”(dirname、dirs 和 files),您将使用这个三元组来供给您的 processDirectory 方法(参见 下载 中的完整清单)。然后,processDirectory() 函数继续创建目标目录(如果还不存在)并传递到 copyFilesToCmis() 方法,以将这些文件实际复制到新创建的目标文件夹中。这个方法将迭代接收到的每个文件,过滤出没有请求的文件,并获取 .jpg 文件的 Exif 数据。我们还将在稍后讨论元数据时深入介绍 copyFilesToCmis() 方法。
步骤 4:读取 Exif 数据
对于遇到的每个类型为 JPG 的文件,您需要提取所有的 Exif 值,以便它们可以保留在目标对象中。因此,当您需要读取 JPG 头部(Exif)数据时,有很多方法可以解决这个问题。这里我不想自己编写一个方法,因为已经有几个现成的库。我选择使用 exif-py,因为它以一种非常常见的方式返回标记:一个 “键/值” 对字典,其中所有的值都是字符串。我认为,如果您想在这里使用一些更 “洋气”(或更自定义)的库来替换 exif-py,您可以轻易做到这一点,因为我料想大多数库都使用一个字典来表示属性集合,即便不是,您也可以轻松地将它们调整为这样做。完成这个任务的实际代码非常简单,如 清单 5 所示。
清单 5. 从一个 JPG 文件读取 Exif 数据
import EXIF
def getExifTagsForFile(filename):
f = open(filename, 'rb')
tags = EXIF.process_file(f)
return tags
更多精彩
赞助商链接