Many useless warnings
I am opening many image file and see absolutely useless warning:
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
PNG file does not have exif data.
module version:
$ pip3 list | grep ExifRead
ExifRead 3.0.0
If image file does not have exif data we just get empty dict.
I have the same problem. This is very annoying! Unfortunately, the development of this module does not seem super active... I fixed it like this until the underlying issue gets fixed:
Go to the implementation of process_file and look at the first try except block, it looks like this:
try:
offset, endian, fake_exif = _determine_type(fh)
except ExifNotFound as err:
logger.warning(err)
return {}
except InvalidExif as err:
logger.debug(err)
return {}
logger.warning(err) is what prints the warning. You can get rid of it like this:
try:
offset, endian, fake_exif = _determine_type(fh)
except ExifNotFound as err:
if warnings:
logger.warning(err)
return {}
except InvalidExif as err:
logger.debug(err)
return {}
and just add a warnings parameter to the function declaration:
def process_file(fh: BinaryIO, stop_tag=DEFAULT_STOP_TAG,
details=True, strict=False, debug=False,
truncate_tags=True, auto_seek=True, warnings=False):
Now if you really need the warning, you can still set warnings to True.
Without hacking the module, in your main code where you call exifread, try:
import logging
then
logging.getLogger("exifread").setLevel(logging.ERROR)