Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Many useless warnings #167

Open
MichaelMonashev opened this issue May 11, 2022 · 2 comments
Open

Many useless warnings #167

MichaelMonashev opened this issue May 11, 2022 · 2 comments

Comments

@MichaelMonashev
Copy link
Contributor

MichaelMonashev commented May 11, 2022

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.

@guwidoe
Copy link

guwidoe commented Oct 24, 2022

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.

@dwinant
Copy link

dwinant commented Dec 20, 2022

Without hacking the module, in your main code where you call exifread, try:
import logging
then
logging.getLogger("exifread").setLevel(logging.ERROR)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants