如何在 excel 文件中保存 for 函数的结果

How to save the results of a for function in an excel file

提问人:Nadeen NBY 提问时间:9/14/2023 最后编辑:PrussNadeen NBY 更新时间:9/14/2023 访问量:58

问:

我需要将此循环的所有结果保存到 excel 工作表文件中:

import itertools


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

for x in foo('ATCG'):
    print(''.join(x))`

我试过了这个:

import itertools
import csv


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


for x in foo('ATCG'):
    print(''.join(x))
    outfile =  open("primers.csv","w", newline = '')
    writer=csv.writer(outfile)
    writer.writerows(str(foo))   

但它最终只保存了循环的最后一个结果

Python 数据操作

评论


答:

1赞 Pruss 9/14/2023 #1

只在循环外创建一次编写器,否则它将完全覆盖每一行的文件。喜欢这个:

import csv
import itertools


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


outfile = open("primers.csv","w")
writer = csv.writer(outfile)

for x in foo('ATCG'):
    row = ''.join(x)
    print(row)
    writer.writerow(row)
   

请注意,您的循环会创建很多排列,它可能不会在非常非常长的时间内结束,并且文件会很大:

AAAAAATGTGTAAGAACT
AAAAAATGTGTAAGAACC
AAAAAATGTGTAAGAACG
AAAAAATGTGTAAGAAGA
AAAAAATGTGTAAGAAGT

评论

0赞 Nadeen NBY 9/14/2023
出于实验目的,我将函数编辑为:def foo(l): yield from itertools.product(*([l] * 2)) 这样我就可以更快地测试结果,但您的代码没有解决问题,它仍然给了我一个空的 excel 工作表文件
0赞 Pruss 9/14/2023
文件中的列应该如何排列?所有字母都在一列中?
0赞 Pruss 9/14/2023
@NadeenNBY 我已经将代码更新为我认为您想要的。它创建一个很长的 excel 工作表。
0赞 Nadeen NBY 9/14/2023
是的,我希望它们都在同一列中,如果您碰巧知道除 Excel 之外的更好方法来保存大量数据,那将非常有帮助
1赞 Pruss 9/15/2023
writer.writerow([row])而不是将它全部放在一列中writer.writerow(row)