gpt4 book ai didi

python - 如何使用python恢复文件的读取操作

转载 作者:行者123 更新时间:2023-11-28 17:28:11 24 4
gpt4 key购买 nike

我有一个大小为 15-16GB 的文件,其中包含由换行符 (\n) 分隔的 json 对象。

我是 python 新手,使用以下代码读取文件。

with open(filename,'rb') as file:
for data in file:
dosomething(data)

如果在读取读数时,我的脚本在 5GB 后失败,我该如何从上次读取位置恢复读取操作并从那里继续。

我正在尝试通过使用 file.tell() 来获取位置并使用 seek() 函数移动指针来做同样的事情。

由于此文件包含 json 对象,在搜索操作后出现以下错误。

ValueError: No JSON object could be decoded

我假设在搜索操作后指针没有得到正确的 json。

我该如何解决?有没有其他方法可以从 python 中的上次读取位置读取。

最佳答案

使用另一个文件存储当前位置:

cur_loc = open("location.txt", "w+")
cur_loc.write('0')
exception = False

i = 0

with open("test.txt","r") as f:
while(True):
i+=1
if exception:
cur_loc.seek(0)
pos = int(cur_loc.readline())
f.seek(pos)
exception = False

try:
read = f.readline()
print read,
if i==5:
print "Exception Happened while reading file!"
x = 1/0 #to make an exception
#remove above if block and do everything you want here.
if read == '':
break
except:
exception = True
cur_loc.seek(0)
cur_loc.write(str(f.tell()))

cur_loc.close()

假设我们有以下 text.txt 作为输入文件:

#contents of text.txt
1
2
3
4
5
6
7
8
9
10

当你运行上面的程序时,你将拥有:

>>> ================================ RESTART ================================
>>>
1
2
3
4
5
Exception Happened while reading file!
6
7
8
9
10
>>>

关于python - 如何使用python恢复文件的读取操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36885793/

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