gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:08:31 28 4
gpt4 key购买 nike

当我像这样使用模块 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 os

def 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, mode + 't', encoding=encoding)
else:
return open(filename, mode, encoding=encoding)

关于python gzipped fileinput 返回二进制字符串而不是文本字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21529163/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com