小编Jam*_*her的帖子

如何从python中的gzip压缩文件中获取随机行而不将其读入内存

假设我有一个531 gig gzip压缩文本文件,其中512 5448 457 601 475行被'\n'分割,并希望在没有文件分割的情况下从中获取随机行.(别担心,它不是那么大;只是想说它是一个巨大的文件,我知道它有多少行.)

我通常如何使用较小的压缩文件:

import fileinput
import gzip
import random

list = []

for line in fileinput.input(file, openhook=gzip.open):
    list.append(line)

listLength = len(list)
randomListLineOne = line[random.randint(0, listLength)]
randomListLineTwo = line[random.randint(0, listLength)]
...
Run Code Online (Sandbox Code Playgroud)

我在这个主题上发现了什么:

如何从python中的一个文件中读取随机行?

import random

def random_line(afile):
    line = next(afile)
    for num, aline in enumerate(afile):
      if random.randrange(num + 2): continue
      line = aline
    return line
Run Code Online (Sandbox Code Playgroud)

Waterman的"水库算法"由Alex Martelli翻​​译,来自Knuth的"计算机编程艺术"

你能为压缩文件调整吗?我尝试将压缩文件设置为文件但是没有用.或者还有另一种(更简单的)方法来实现这一目标吗?

python memory random gzip line

4
推荐指数
1
解决办法
1633
查看次数

标签 统计

gzip ×1

line ×1

memory ×1

python ×1

random ×1