Closed
Description
Bug report
When using the fileinput.hook_compressed
hook in binary mode in the case that the file is not compressed, an exception is raised instead of processing the file like normal.
# fileinput_cat.py
import fileinput
import sys
with fileinput.input(mode='rb', openhook=fileinput.hook_compressed) as f:
for line in f:
sys.stdout.buffer.write(line)
$ python3.10 fileinput_cat.py fileinput_cat.py
Traceback (most recent call last):
File "fileinput_bug.py", line 5, in <module>
for line in f:
File ".../lib/python3.10/fileinput.py", line 256, in __next__
line = self._readline()
File ".../lib/python3.10/fileinput.py", line 385, in _readline
self._file = self._openhook(self._filename, self._mode)
File ".../lib/python3.10/fileinput.py", line 432, in hook_compressed
return open(filename, mode, encoding=encoding, errors=errors)
ValueError: binary mode doesn't take an encoding argument
Your environment
I tried this on Python 3.10.9 (installed from nixpkgs) on Intel macOS 11.7.3. It was working on Python 3.9.16.
Linked PRs
- gh-101961 fileinput.hookcompressed should not set the encoding value for the binary mode #102068
- [3.11] gh-101961 fileinput.hookcompressed should not set the encoding value for the binary mode (gh-102068) #102098
- [3.10] gh-101961 fileinput.hookcompressed should not set the encoding value for the binary mode (gh-102068) #102099