[issue16584] unhandled IOError filecmp.cmpfiles() if file not readable

Till Maas report at bugs.python.org
Fri Nov 30 19:27:20 CET 2012


New submission from Till Maas:

If filecmp is used with files that the user is not allowed to read, it creates an IOError exception instead of returning the file's name as an file that could not compared. The documentation says:

http://docs.python.org/2/library/filecmp.html
Returns three lists of file names: match, mismatch, errors. [...] errors lists the names of files which could not be compared. Files are listed in errors if they don’t exist in one of the directories, the user lacks permission to read them or if the comparison could not be done for some other reason.

The attached file fails with an IOError:
$ python filecmp-minimal.py 
Traceback (most recent call last):
  File "filecmp-minimal.py", line 21, in <module>
    print filecmp.cmpfiles(join(t, "a"), join(t, "b"), ["testfile"], shallow=False)
  File "/usr/lib64/python2.7/filecmp.py", line 258, in cmpfiles
    res[_cmp(ax, bx, shallow)].append(x)
  File "/usr/lib64/python2.7/filecmp.py", line 270, in _cmp
    return not abs(cmp(a, b, sh))
  File "/usr/lib64/python2.7/filecmp.py", line 53, in cmp
    outcome = _do_cmp(f1, f2)
  File "/usr/lib64/python2.7/filecmp.py", line 66, in _do_cmp
    with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2:
IOError: [Errno 13] Permission denied: '/tmp/tmpp93pmt/a/testfile'

A quick glance at the current code in hg shows, that this bug is probably also present in all later Python versions than 2.7. I will attach a small patch that fixes this bug.

----------
components: Library (Lib)
files: filecmp-minimal.py
messages: 176700
nosy: till
priority: normal
severity: normal
status: open
title: unhandled IOError filecmp.cmpfiles() if file not readable
type: crash
versions: Python 2.7
Added file: http://bugs.python.org/file28168/filecmp-minimal.py

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue16584>
_______________________________________


More information about the Python-bugs-list mailing list