Exiftool 导出 JSON 与 Python
Exiftool export JSON with Python
我正在尝试通过 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!
我认为问题在于文件重定向是命令行的 属性,subprocess.run
不可用。参见 this Whosebug question。
对于 exiftool 解决方案,您可以使用 -W
(-tagOut
) option,特别是 -W+! C:/Users/XXX/Desktop/test_folder/temp.json
。请参阅 link.
下的注释 #3
我正在尝试通过 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!
我认为问题在于文件重定向是命令行的 属性,subprocess.run
不可用。参见 this Whosebug question。
对于 exiftool 解决方案,您可以使用 -W
(-tagOut
) option,特别是 -W+! C:/Users/XXX/Desktop/test_folder/temp.json
。请参阅 link.