diff --git a/Lib/aifc.py b/Lib/aifc.py index c50bd79ff97..a4d9616c695 100644 --- a/Lib/aifc.py +++ b/Lib/aifc.py @@ -920,13 +920,18 @@ class Aifc_write: _write_long(self._file, pos) _write_string(self._file, name) -def open(f, mode): - if mode == 'r': +def open(f, mode=None): + if mode is None: + if hasattr(f, 'mode'): + mode = f.mode + else: + mode = 'rb' + if mode in ('r', 'rb'): return Aifc_read(f) - elif mode == 'w': + elif mode in ('w', 'wb'): return Aifc_write(f) else: - raise Error, "mode must be 'r' or 'w'" + raise Error, "mode must be 'r', 'rb', 'w', or 'wb'" openfp = open # B/W compatibility diff --git a/Lib/sunau.py b/Lib/sunau.py index b49a5dafae5..0ba7dc95376 100644 --- a/Lib/sunau.py +++ b/Lib/sunau.py @@ -456,12 +456,17 @@ class Au_write: self._datalength = self._datawritten self._file.seek(0, 2) -def open(f, mode): - if mode == 'r': +def open(f, mode=None): + if mode is None: + if hasattr(f, 'mode'): + mode = f.mode + else: + mode = 'rb' + if mode in ('r', 'rb'): return Au_read(f) - elif mode == 'w': + elif mode in ('w', 'wb'): return Au_write(f) else: - raise Error, "mode must be 'r' or 'w'" + raise Error, "mode must be 'r', 'rb', 'w', or 'wb'" openfp = open