Index: Lib/argparse.py =================================================================== --- Lib/argparse.py (revision 86649) +++ Lib/argparse.py (working copy) @@ -1710,7 +1710,7 @@ args.extend(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) delattr(namespace, _UNRECOGNIZED_ARGS_ATTR) return namespace, args - except ArgumentError: + except (ArgumentError, IOError): err = _sys.exc_info()[1] self.error(str(err)) Index: Lib/test/test_argparse.py =================================================================== --- Lib/test/test_argparse.py (revision 86649) +++ Lib/test/test_argparse.py (working copy) @@ -1451,7 +1451,7 @@ Sig('-x', type=argparse.FileType()), Sig('spam', type=argparse.FileType('r')), ] - failures = ['-x', ''] + failures = ['-x', '', 'non-existent-file.txt'] successes = [ ('foo', NS(x=None, spam=RFile('foo'))), ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))),