gpt4 book ai didi

python - 如何只读取文件的一部分 Python

转载 作者:行者123 更新时间:2023-12-04 08:51:35 26 4
gpt4 key购买 nike

我有一个日志文件,其中包含所谓的标题部分,其余部分是大量数据。标题部分包含某些键值对,这些键值对告诉数据库表有关所述文件的信息。
我的任务之一是解析出一些标题信息。另一个任务是遍历整个文件并解析出某些字符串出现的次数。后面的部分我有一个附加的功能:

with open(filename, 'rb') as f:
time_data_count = 0
while True:
memcap = f.read(102400)
# f.seek(-tdatlength, 1)
poffset_set = set(config_offset.keys())
# need logic to check if key value exists
time_data_count += memcap.count(b'TIME_DATA')
if len(memcap) <= 8:
break
if time_data_count > 20:
print("time_data complete")
else:
print("incomplete time_data data")
print(time_data_count)
现在的问题是它不是一行一行的处理,这会花费很多时间。我只想获取此日志的前 50 行,然后解析它们。然后让函数的其余部分遍历整个文件,而无需逐行进行计数并进行计数。
是否可以在不遍历整个文件的情况下提取前 50 行?
前 50 行有表单的标题信息
产品编号:A785X
我真正需要的是在该日志文件中获取 ProdID 的值

最佳答案

您可以使用 for 逐行读取前 50 个循环或列表理解只需阅读下一行 50 次。这会将读取指针向下移动到文件中,因此当您调用 .read() 时或任何其他方法,你不会得到任何你已经消耗的东西。然后,您可以批量处理其余部分,或者您需要:

with open(filename, 'rb') as f:
first_50_lines = [next(f) for _ in range(50)] # first 50 lines
remainder_of_file = f.read() # however much of the file remains
只要相同的文件对象(在本例中为 f)一直在运行,您就可以交替使用各种读取文件的方法。逐行,逐块大小,或一次全部(尽管 .read() 总是会阻止进一步处理,因为一次消耗整个事物)。

关于python - 如何只读取文件的一部分 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64074020/

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