【问题标题】:Exiftool export JSON with PythonExiftool 使用 Python 导出 JSON
【发布时间】:2022-01-06 17:39:35
【问题描述】:

我正在尝试通过 Python 使用 Exiftool 提取一些元数据并将它们存储在 JSON 文件中。

如果我在 CMD 中运行以下命令(根据文档),它可以正常工作,生成一个 temp.json 文件:

exiftool -filename -createdate -json C:/Users/XXX/Desktop/test_folder > C:/Users/XXX/Desktop/test_folder/temp.json

从 Python 管理 Exiftool 时,数据被正确提取,但没有生成 JSON 文件。

import os
import subprocess

root_path = 'C:/Users/XXX/Desktop/test_folder'

for path, dirs, files in os.walk(root_path):
    for file in files:
        file_path = path + os.sep + file
        exiftool_exe = 'C/Users/XXX/Desktop/exiftool.exe'
        json_path = path + os.sep + 'temp.json'
        export = os.path.join(path + ' > ' + json_path)

        exiftool_command = [exiftool_exe, '-filename', '-createdate', '-json', export]
        process = subprocess.run(exiftool_command)
        print(process.stdout)

当我运行代码时,它会显示错误:

Error: File not found - C:/Users/XXX/Desktop/test_folder > C:/Users/XXX/Desktop/test_folder/temp.json  

我错过了什么,关于如何让它工作的任何想法?谢谢!

使用解决方案编辑:

我把固定代码放在这里以防万一它可以帮助别人:

import os
import subprocess

root_path = 'C:/Users/XXX/Desktop/test_folder'

for path, dirs, files in os.walk(root_path):
    for file in files:
        file_path = path + os.sep + file
        exiftool_exe = 'C/Users/XXX/Desktop/exiftool.exe'
        export = root_path + os.sep + 'temp.json'

        exiftool_command = [exiftool_exe, file_path, '-filename', '-createdate', '-json', '-W+!', export]
        process = subprocess.run(exiftool_command)
        
        print(process.stdout)

感谢 StarGeek!

【问题讨论】:

    标签: json python-3.x export exiftool


    【解决方案1】:

    我认为问题在于文件重定向是命令行的属性,不适用于subprocess.run。见this StackOverflow question

    对于 exiftool 解决方案,您可以使用 -W (-tagOut) option,特别是 -W+! C:/Users/XXX/Desktop/test_folder/temp.json。请参阅该链接下的注释 #3。

    【讨论】:

    • 就是这样!现在像魅力一样工作。已阅读 exiftool 文档但错过了 -W 标签。谢谢你的帮助!!
    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多