繁体   English   中英

提取根据多个文本文件中的数据计算得出的输出,并将其写入CSV文件的不同列

[英]Taking output calculated from data in multiple text files and writing them into different columns of a CSV file

我正在从文本文件的不同列中的两个数字计算值(数字)。 然后,我遍历多个文本文件以进行相同的计算。 我需要将输出写入CSV文件的不同列,其中每一列都对应于从单个文本文件获得的计算结果。 我或多或少知道如何遍历不同的文件,但是我不知道如何告诉Python写入不同的列。 任何指导表示赞赏。

您可以使用zip提供延迟迭代的事实来非常有效地执行此操作。 您可以定义一个简单的生成器函数,该函数可以对初始化文件的每一行进行计算。 您还可以使用contextlib.ExitStack在单个上下文管理器中管理打开的文件:

from contextlib import ExitStack
from csv import writer

def calc(line):
    # Ingest a line, do some calculations on it.
    # This is the function you wrote.

input_files = ['file1.txt', 'file2.txt', ...]

def calculator(file):
    """
    A generator function that will lazily apply the calculation
    to each line of the file it is initialized with.
    """
    for line in file:
        yield calc(line)

with open('output.csv', 'w') as output, ExitStack() as input_stack:
    inputs = [calculator(input_stack.enter_context(open(file))) for file in input_files]
    output_csv = writer(output)
    output_csv.wite_row(input_files)  # Write heading based on input files
    for row in zip(*inputs):
        output_csv.write_row(row)

CSV中的输出将与input_files的文件名顺序相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM