You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python for循环生成的结果保存到Excel文件中

问题解决方法

原代码的问题

  • 每次循环都以"w"模式打开文件:该模式会清空文件原有内容并重新写入,因此最终只会保留最后一次循环的结果。
  • writer.writerows(str(foo))逻辑错误:foo是函数对象,转成字符串并非生成的序列数据,且writerows需要接收可迭代的行数据(如列表、元组组成的可迭代对象)。

正确代码实现

考虑到你要生成的是4^18(约687亿)条序列,数据量极大,以下提供两种高效的写入方式:

方式1:循环逐条写入(同时打印)

import itertools
import csv

def foo(l):
     yield from itertools.product(*([l] * 18)) 

# 用with语句管理文件,自动关闭,仅打开一次
with open("primers.csv", "w", newline='') as outfile:
    writer = csv.writer(outfile)
    for x in foo('ATCG'):
        seq = ''.join(x)
        print(seq)
        # 将字符串放入列表作为一行数据写入
        writer.writerow([seq])

方式2:批量写入(效率更高)

适合不需要打印,仅需要保存数据的场景:

import itertools
import csv

def foo(l):
     yield from itertools.product(*([l] * 18)) 

with open("primers.csv", "w", newline='') as outfile:
    writer = csv.writer(outfile)
    # 生成器表达式批量生成每行数据,直接写入
    writer.writerows((''.join(x),) for x in foo('ATCG'))

重要提醒

4^18的序列数量超过680亿条,生成的CSV文件会占用极大存储空间(约几十TB),普通Excel无法打开如此大的文件(Excel最大支持约100万行),建议确认是否真的需要生成全部序列,或考虑分批处理。

内容的提问来源于stack exchange,提问作者Nadeen NBY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 22:05:16