擅长:python、mysql、java
<p>看一下<a href="https://hg.python.org/cpython/file/3.5/Lib/fileinput.py#l389" rel="nofollow noreferrer">the source</a>并注意到<a href="https://docs.python.org/3/library/gzip.html#gzip.open" rel="nofollow noreferrer">^{<cd1>}</a>和{a3}支持编码参数,您自己滚动应该不会太困难:</p>
<pre><code>def hook_compressed_encoded(encoding):
def hook_compressed(filename, mode):
ext = os.path.splitext(filename)[1]
if ext == '.gz':
import gzip
return gzip.open(filename, mode, encoding=encoding)
elif ext == '.bz2':
import bz2
return bz2.open(filename, mode, encoding=encoding)
else:
return open(filename, mode, encoding=encoding)
return hook_compressed
fi = fileinput.FileInput(openhook=hook_compressed_encoded('iso-8859-1'))
</code></pre>