gpt4 book ai didi

python - 导入 500GB 文本文件的最快方法,只取需要的部分

转载 作者:太空狗 更新时间:2023-10-29 22:27:30 28 4
gpt4 key购买 nike

我在几个月内分离了大约 500GB 的文本文件。在这些文本文件中,前 43 行只是连接信息(不需要)。接下来的 75 行是观察的描述符。接下来是 4 行(不需要),然后是下一个观察结果,即 75 行。

我想要的是这 75 行(每次观察的描述符都在同一个地方),它们的特征如下:

ID: 5523
Date: 20052012
Mixed: <Null>
.
.

我想将其更改为 csv 格式 5523;20052012;;.. 用于每次观察。这样我最终得到的文本文件要小得多。由于描述符相同,我会知道第一个位置是 ID。

完成文本文件后,我将打开下一个文件并附加它(或者创建一个新文件会更快吗?)。

我一直在打开文件,但效率很低。加载它。逐行删除这些观察结果。如果它对测试样本采取了相当多的措施,那么它显然不是最好的方法。

任何建议都会很棒。

最佳答案

您说您有“大约 500GB 的文本文件”。如果我理解正确的话,你没有为每个观察的固定长度(注意,我不是在谈论的数量,我的意思是所有的总长度,以字节为单位观察线)。这意味着您必须遍历整个文件,因为您无法确切知道换行符的位置。

现在,根据每个单独的文本文件的大小,您可能需要寻找不同的答案。但是如果每个文件都足够小(小于 1 GB?),您也许可以使用 linecache模块,它为您处理逐行搜索。

你可能会像这样使用它:

import linecache

filename = 'observations1.txt'

# Start at 44th line
curline = 44
lines = []

# Keep looping until no return string is found
# getline() never throws errors, but returns an empty string ''
# if the line wasn't found (if the line was actually empty, it would have
# returned the newline character '\n')
while linecache.getline(filename, curline):
for i in xrange(75):
lines.append(linecache.getline(filename, curline).rstrip())
curline += 1

# Perform work with the set of observation lines
add_to_observation_log(lines)

# Skip the unnecessary section and reset the lines list
curline += 4
lines = []

我对此进行了测试,它在 5 秒内完成了一个 23MB 的文件。

关于python - 导入 500GB 文本文件的最快方法,只取需要的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10676170/

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