情景:
我有两个文件, file1 size = 19.7MB 和 file2 size = 446KB 。我正在运行以下代码来处理来自两个文件的数据并获取输出数据文件。但是在某个输出文件大小(332KB)之后,程序停止将数据写入输出文件。我尝试使用flush()
函数,但输出文件再次包含与输出文件完全相同的大小,而不使用flush()
函数(并且在两个条件下都创建了相同的时间(文件创建和最后修改) )while循环仍在运行。
有人建议可能的原因吗?我应该使用sleep()
函数在一段时间后唤醒程序吗?谢谢
with open("file2",'rU') as gg:
for g in gg:
g = g.rstrip().split('\t')
with open(file1) as cc:
c = c.rstrip().split('\t')
if int(c[0]) == int(g[0]) and int(c[1]) >= int(g[2]) and int(g[3]) >= int(c[1]):
with open('output.txt', 'a') as ii:
ii.write(c[1]+'\t'+'\t'.join(g)+'\n')
ii.flush()
答案 0 :(得分:0)
您正在创建与同一文件的连接太多,并且此类操作存在操作系统限制。
尝试尽可能地删除你的脚本
new_list = []
with open("file2",'rU') as gg:
for g in gg:
g = g.rstrip().split('\t')
with open(file1) as cc:
c = cc.rstrip().split('\t')
if int(c[0]) == int(g[0]) and int(c[1]) >= int(g[2]) and int(g[3]) >= int(c[1]):
new_list.append(c[1]+'\t'+'\t'.join(g)+'\n')
with open('output.txt', 'a') as ii:
for e in new_list:
ii.write(e)