Issue #20501: fileinput module no longer reads whole file into memory when using
fileinput.hook_encoded.
diff --git a/Lib/fileinput.py b/Lib/fileinput.py
index 04e97bd..21c2d1f 100644
--- a/Lib/fileinput.py
+++ b/Lib/fileinput.py
@@ -387,9 +387,10 @@
def hook_encoded(encoding):
- import codecs
+ import io
def openhook(filename, mode):
- return codecs.open(filename, mode, encoding)
+ mode = mode.replace('U', '').replace('b', '') or 'r'
+ return io.open(filename, mode, encoding=encoding, newline='')
return openhook