Skip to main content
 首页 » 编程设计

python之使用多个工作表创建多个 Excel 文件

2025年05月04日23lori

我有一个表格中的主 csv 文件

col1, col2, col3, col4... 
a,    x,    y,    z 
a,    x,    y,    z 
b,    x,    y,    z 
b,    x,    y,    z 
..    ..    ..    .. 

我想读入这个文件。创建一个新的 Excel 文件,所有值都在 col1==a 和另一个文件,所有值在 col1==b .所以 OutputFilea 看起来像:

col1, col2, col3, col4... 
a,    x,    y,    z 
a,    x,    y,    z 

和OutputFileb看起来像

col1, col2, col3, col4... 
b,    x,    y,    z 
b,    x,    y,    z 

我的问题是,我应该逐行使用 csv.reader() 并使用条件来确定应该附加哪个文件,还是应该附加一个带有行的字符串,然后将每个文件写入结束。或者是否有一个模块可以优化这样的流程?

请您参考如下方法:

由于您要处理大型数据集,因此最好不要同时在内存中保存太多数据。您可以维护一个由行前缀键入的打开文件的字典,并确保使用 contextlib.ExitStack 正确关闭文件。 .这样做将允许您在处理输入电子表格时延迟打开新文件:

from contextlib import ExitStack 
 
output_files = {} 
with open('master.csv', 'r') as master, ExitStack() as output_stack: 
    for line in master: 
        prefix = line.split(',', 1)[0] 
        if prefix not in output_files: 
            output_name = 'output' + prefix + '.csv' 
            output = output_stack.enter_context(open(output_name, 'w')) 
            output_files[prefix] = output 
        else: 
            output = output_files[prefix] 
        print(line, file=output) 

鉴于您希望按原样将行复制到输出文件中,我选择不使用 csv模块。如果你想应用更复杂的处理,你当然应该考虑添加它。