diff -r d8674633df18 Lib/imghdr.py --- a/Lib/imghdr.py Sun Jan 19 20:47:01 2014 +0200 +++ b/Lib/imghdr.py Sun Jan 19 21:08:18 2014 +0200 @@ -8,7 +8,7 @@ def what(file, h=None): if h is None: - if isinstance(file, str): + if isinstance(file, (str, bytes)): f = open(file, 'rb') h = f.read(32) else: diff -r d8674633df18 Lib/test/test_imghdr.py --- a/Lib/test/test_imghdr.py Sun Jan 19 20:47:01 2014 +0200 +++ b/Lib/test/test_imghdr.py Sun Jan 19 21:08:18 2014 +0200 @@ -1,5 +1,7 @@ import imghdr import unittest +import os +import io from test.support import findfile TEST_FILES = ( @@ -45,6 +47,16 @@ b'GIF80'): self.assertIsNone(imghdr.what(None, header)) + def test_file_argument(self): + for filename, expected in TEST_FILES: + filename = findfile(filename, subdir="imghdrdata") + self.assertEqual(imghdr.what(os.fsencode(filename)), + expected) + with open(filename, 'rb') as stream: + data = stream.read() + with io.BytesIO(data) as stream: + self.assertEqual(imghdr.what(stream), expected) + if __name__ == '__main__': unittest.main() \ No newline at end of file