Skip to content

Exception using fileinput.hook_compressed in binary mode #101961

Closed
@gmacon

Description

@gmacon

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

Metadata

Metadata

Labels

stdlibPython modules in the Lib dirtopic-IOtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions