擅长:python、mysql、java
<p>没有办法把这些组合起来。您甚至不能通过传递文本模式将<code>hook_compressed</code>与默认的<code>utf8</code>一起使用,因为<code>FileInput</code>拒绝接受{<cd4>},前提是{<cd5>}总是指文本。在</p>
<p>唯一的解决办法就是自己写。在</p>
<pre><code>def hook_compressed_encoded(encoding):
def hook(filename, mode):
ext = os.path.splitext(filename)[1]
if ext == '.gz':
import gzip
return gzip.open(filename, 'rt', encoding=encoding)
elif ext == '.bz2':
import bz2
return bz2.open(filename, 'rt', encoding=encoding)
else:
return open(filename, 'rt', encoding=encoding)
return hook
fi = fileinput.FileInput(openhook=hook_compressed_encoded('iso-8859-1'))
</code></pre>