我正在嘗試通過 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!
uj5u.com熱心網友回復:
我認為問題在于檔案重定向是命令列的一個屬性,并且不適用于subprocess.run. 請參閱此 StackOverflow 問題。
對于 exiftool 解決方案,您將使用-W( -tagOut) 選項,特別是-W ! C:/Users/XXX/Desktop/test_folder/temp.json. 請參閱該鏈接下的注釋 #3。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/404618.html
標籤:
上一篇:無法在控制臺上獲取JSON資料
