假如有个txt文件,里面是数据排列格式是每行每行的排列。
我现在需要 每次去进入txt读取50行数据,提交这50行数据后,在进行下一次读取50行数据,那怎么避免第二次读取的50行操作不会重复读取到第一次所读取到的数据?
第一次运行结束后,怎么能保证下次读取到的是50行以后的内容?
list_t = []
num = 0
with open('niu.txt','r',encoding='utf-8')as f:
for line in f:
if num == 50:
break
else:
list_t.append(line.strip())
num += 1
你可以使用readline方法,一次读一行,循环50次就是读50行
其实txt文件一般都不会太大,你完全可以直接一次性读到内存里,变成一个list,只不过拼接sql的时候判断一下,每50个一个字符串呗。
-=-=-
另,你自己不是已经写了代码去读取了,num=50别break出去,直接处理,处理完继续循环不就结了
可以不进行循环,直接全部读取,且只读取一次。然后选取0-50行内容进行操作,操作完毕后,在操作后续的内容即可。
list_t = []
f = open(''niu.txt','r',encoding='utf-8'')
lines=f.readlines()
list_t.append(lines[0,50])
但是我第二次也要读取50行呀,假设txt有200行数据,第一次读取50行,第二次就要读取51-100位置的行数,第三次读101-150,第四次读取151-200
能否实现:先拷贝下txt文件,在读取原txt列表,读取50行并且同时删除这读取的50行,这样下次再读取不会有重复的了
def read_txt():
with open('niu.txt', 'r', encoding='utf-8') as f:
data = f.readlines()
l_index = 0
r_index = 50
output = data[l_index: r_index]
for i in output:
print(i.rstrip("\n"))
while True:
u_input = str(input("请输入(1:前50行,2:后50行, q:退出)"))
if u_input == "q":
break
if u_input == "1":
l_index -= 50
r_index -= 50
if l_index < 0:
print("Error: 前面不存在!")
l_index = 0
r_index = 50
if u_input == "2":
l_index += 50
r_index += 50
output = data[l_index: r_index]
for i in output:
print(i.rstrip("\n"))
if __name__ == '__main__':
read_txt()
这个思路可以吗?可以往前,往后读,需要返回数据的话,把print改成return
思路: 打开文件之后,先不要关闭,读完50行后,下次继续用。 结束时关闭文件
打开文件
fileHandler = open ("data.txt", "r");
一次读取一行, 50行后返回
line = file.readline();
下次需要时继续读取文件, 会从上次的地方继续读取内容
line = file.readline();