При написании кода для извлечения метаданных из файлов изображений я преуспеваю с некоторыми из них, в то время как другие утверждают, что не существуют или не являются файлами.
Однако все файлы jpg эквивалентны для обработки моим кодом:
- Все находятся в одной папке, и у меня нет проблем с путем к ним
- Все файлы в формате jpg, jpeg; некоторые из них содержат метаданные, добавленные вручную (с помощью инструмента ACDSEE в Windows): но именно эти файлы обрабатываются правильно
Код: Выделить всё
import os, os.path
import iptcinfo3
from pathlib import Path
for fname in os.listdir('static/ImagesCabWillA'):
fil1=Path(fname)
if not fil1.exists():
print(fname, " doesn't exist")
print("§"*15)
for fname in os.listdir('static/ImagesCabWillA'):
if os.path.isfile(fname):
print('ok ', fname, 'type : ', type(fname))
else:
print('NOT ok : ',fname, 'type : ', type(fname))
print('==== end list1 ====')
for fname in os.listdir('static/ImagesCabWillA'):
if os.path.isfile(fname) and fname.split(".")[1] in ("jpg","jpeg","JPG","JPEG"):
print("\n",fname,"\n")
info = iptcinfo3.IPTCInfo(fname, force=True)
print('-----------')
print(info)
# python what is b prefix in string printing : byte, byte string
print (type(info["headline"]))
print('=============') #
# if isinstance(info['object name'],bytes):
print('zzzzzzzzz')
print(info["headline"].decode("utf-8")) # , "\n"
print(info["object name"].decode("utf-8"), "\n" )
- Нет ничего конкретного во Flask в этом проблемном коде; это простой и понятный Python...
- Я пробовал использовать os.path.isfile() и pathlib.Path(), но проблема та же....
- Я подозреваю, что существует неоднородность кодировки различных имен файлов jpg или внутреннего кодирования файлов jpg (некоторые изначально пришли через Whatsapp, а другие — с телефона или с камеры…)
- Я подозреваю, что класс файлового объекта изменяется в результате обработки цикла for...
test_iptc3.py
содержимое папки:
01.jpg 2024-03-22 20:33 45,3 КБ
02_DSCF0225.JPG 2024-03-22 20:33 525,5 КБ
03_IMG-20220517-WA0006.jpeg 22 марта 2024 20:33 317,7 КБ 04_IMG_20220207_182856.jpg 22 марта 2024 20:33 386,8 КБ
05_IMG-20220325-WA0014.jpeg 22 марта 2024 20:33 201 .5 КБ
06_IMG- 20220517-WA0013.jpeg 2024-03-22 20:33 303,9 КБ
07_IMG-20220325-WA0021.jpeg 2024-03-22 20:33 197,9 КБ
08_IMG_20220509_193214. jpg 2024-03-22 20: 33 430,4 КБ
09_DSCF8528.JPG 22 марта 2024 20:33 273,1 КБ
DSCF9384Lite.JPG 14 апреля 2024 17:42 462,2 КБ
DSCF9387Lite.JPG 14 апреля 2024 16 :33 496,4 КБ
Вывод консоли Python:
Подробнее здесь: https://stackoverflow.com/questions/783 ... s-solved-c