Skip to content

Exception using fileinput.hook_compressed in binary mode #101961

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

stdlibStandard Library Python modules in the Lib/ directorytopic-IOtype-bugAn unexpected behavior, bug, or error

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions