python - 在 Python 中使用字符串而不是字节迭代 gzipped 对象
问题描述
根据文件的扩展名,我使用带有上下文管理器的不同开启器,如下所示:
if args.vcf_in.endswith(".gz"):
dopenf = gzip.open
mode = "rb"
else:
openf = open
mode = "rt"
不幸的是,当我尝试在一种情况下迭代对象时,它是字节和另一个字符串,并且代码失败:
with openf(args.vcf_in, mode) as fin:
for line in fin:
count += 1
print(line)
if line.startswith("#"):
有没有办法遍历一个 gzip 文件,以便输出的行是字符串?我知道我可以检查它们是否是字节并对其进行解码,但我很好奇是否有更好的方法使用 opener 或 io 包。
谢谢!
解决方案
也许我在这里误解了一些东西,但是如果您的 gzip 文件是文本文件,您应该能够简单地调用 gzip.open() 并使用 mode='r'(不是 'rb')代替标准的 open()。不需要所有的 io 类。
推荐阅读
- angular - 未捕获的错误:Angular 12 中的 JIT 编译器不可用
- java - 将消费者泛型类型转换为另一种类型
- javascript - 如何避免 Select2 触发更改,但将选项修复为数据库中的特定值?
- javascript - 在 JavaScript/TypeScript 中获取日期字符串的格式字符串
- c# - 在添加新项目中输入错误后“Package EntityFramework 5.0.0 已恢复”
- javascript - 检查选择字段中的值 - 更改禁用状态
- npm - “npm run build”不是在添加纱线之前运行吗?
- python - 不同类窗口的Python tkinter问题
- android - Android:为 Futures 和 AppSearch Android 12 导入哪些依赖项
- python - 编码/数据库库的数据库连接问题