可以使用python文件输入';s openhook选项将hook_压缩和hook_编码堆叠在一起?
我正在读一个压缩文件;未压缩的数据应解释为UTF-8。所以我想在可以使用python文件输入';s openhook选项将hook_压缩和hook_编码堆叠在一起?,python,Python,我正在读一个压缩文件;未压缩的数据应解释为UTF-8。所以我想在fileinputopenhook参数中同时使用hook\u compressed和hook\u encoded。但是,我看不到堆叠/包装它们的方法 现有的钩子很可能采用类似文件的对象,而不仅仅是文件名,我尝试了一下: def myhook(file,mode): return (fileinput.hook_encoded("utf-8"))(fileinput.hook_compressed(file,mode),mod
fileinput
openhook
参数中同时使用hook\u compressed
和hook\u encoded
。但是,我看不到堆叠/包装它们的方法
现有的钩子很可能采用类似文件的对象,而不仅仅是文件名,我尝试了一下:
def myhook(file,mode):
return (fileinput.hook_encoded("utf-8"))(fileinput.hook_compressed(file,mode),mode)
……但没有这样的运气 相当老的问题,但是
hook_encoded
只使用codecs
模块。因此,您可以使用fileinput.input(mode=“rb”,open\u hook=fileinput.hook\u compressed)
然后使用codecs.decode对结果进行解码。但是,如果您将此消息传递给应用程序的任何部分都知道如何处理编码字符串,那么您可以不做任何事情
还是你自己找到了另一个答案?这是一个很老的问题,但是hook\u encoded
只使用编解码器
模块。因此,您可以使用fileinput.input(mode=“rb”,open\u hook=fileinput.hook\u compressed)
然后使用codecs.decode对结果进行解码。但是,如果您将此消息传递给应用程序的任何部分都知道如何处理编码字符串,那么您可以不做任何事情
还是你自己找到了另一个答案