python gzipped fileinput返回二进制字符串而不是文本字符串

python gzipped fileinput返回二进制字符串而不是文本字符串,第1张

概述当我使用模块fileinput循环遍历一组gzip压缩文件的行时,如下所示:for line in fileinput.FileInput(files=gzipped_files,openhook=fileinput.hook_compressed): 那些行是字节字符串而不是文本字符串.当使用模块gzip时,可以通过使用'rt'而不是'rb'打开文件来防止

当我使用模块fileinput循环遍历一组Gzip压缩文件的行时,如下所示:

for line in fileinput.fileinput(files=gzipped_files,openhook=fileinput.hook_compressed):

那些行是字节字符串而不是文本字符串.

当使用模块gzip时,可以通过使用’rt’而不是’rb’打开文件来防止这种情况:http://bugs.python.org/issue13989

模块fileinput是否有类似的修复,所以我可以让它返回文本字符串而不是字节字符串?我尝试添加mode =’rt’,但后来我收到此错误:

ValueError: fileinput opening mode must be one of 'r','rU','U' and 'rb'
最佳答案您必须实现自己的openhook函数来使用编解码器打开文件:

import osdef hook_compressed_text(filename,mode,enCoding='utf8'):    ext = os.path.splitext(filename)[1]    if ext == '.gz':        import gzip        return gzip.open(filename,mode + 't',enCoding=enCoding)    elif ext == '.bz2':        import bz2        return bz2.open(filename,enCoding=enCoding)    else:        return open(filename,enCoding=enCoding)
总结

以上是内存溢出为你收集整理的python gzipped fileinput返回二进制字符串而不是文本字符串全部内容,希望文章能够帮你解决python gzipped fileinput返回二进制字符串而不是文本字符串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存