gpt4 book ai didi

Python从gzip压缩文件中读取csv行

转载 作者:行者123 更新时间:2023-12-01 01:43:37 27 4
gpt4 key购买 nike

我正在尝试解析一个 gzipped csv 文件(其中字段由 | 字符分隔),以测试直接在 Python 中读取文件是否会比 zcat file.gz | python 更快。在解析内容时。

我有以下代码:

#!/usr/bin/python3

import gzip

if __name__ == "__main__":
total=0
count=0

f=gzip.open('SmallData.DAT.gz', 'r')
for line in f.readlines():
split_line = line.split('|')
total += int(split_line[52])
count += 1

print(count, " :: ", total)

但我收到以下错误:

$ ./PyZip.py 
Traceback (most recent call last):
File "./PyZip.py", line 11, in <module>
split_line = line.split('|')
TypeError: a bytes-like object is required, not 'str'

如何修改它以读取该行并正确拆分它?

我主要对由 | 分隔的第 52 个字段感兴趣。我的输入文件中的行如下所示:

字段1|字段2|字段3|...字段52|字段53

是否有比我对第 52 个字段中的所有值求和更快的方法?

谢谢!

最佳答案

您应该在分割之前先解码该行,因为解压缩的文件会被读取为字节:

split_line = line.decode('utf-8').split('|')

用于对第 52 个字段中的所有值求和的代码很好。没有办法让它变得更快,因为必须读取并分割所有行才能识别每行的第 52 个字段。

关于Python从gzip压缩文件中读取csv行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51624803/

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