Python循环写入大矩阵元素至文件仅保留最后内容的问题求助
解决大型矩阵元素写入文件仅保留最后一项的问题
嘿,这个问题我之前也碰到过!核心原因是你每次循环都用"w"模式打开文件——这个模式会在打开时直接清空整个文件的内容,所以每一次写入都会把之前的内容完全覆盖,最后自然就只剩最后一次写入的数据了。
快速修复方案
我们只需要把文件打开的操作移到循环外面,这样就能持续写入而不会覆盖之前的内容:
l = 20 j = 1 delt = -1 # 一次性打开文件,用"w"模式初始化,循环内直接写入 with open("file.txt", "w") as f: for x in range(0, 2**l): for y in range(0, l): k = (y+1)%l if check_nth_bit(x, y) == 0: a = [x, x, -j*h/2] f.write(f"{a}\n") # 用f-string格式化,加换行让每条数据单独一行 else: b = [x, x, j*h/2] f.write(f"{b}\n")
针对大型数据的额外优化建议
你的数据规模不小(总共有2^20 * 20 = 20,971,520条记录),频繁的单条写入会影响性能,这里给你几个小技巧:
- 批量写入:先把要输出的内容收集到一个列表中,积累到一定数量后再一次性写入文件,减少I/O操作次数
- 使用CSV格式:如果后续需要读取这些数据,用
csv模块来写入会让数据结构更规范,读取也更方便 - 考虑二进制文件:如果数据量极大,二进制文件的读写效率会比文本文件高很多,适合大规模数据存储
内容的提问来源于stack exchange,提问作者lzcostademoraes
相关产品推荐
相关产品推荐

