Python 从多个文本文件中的数据计算输出,并将其写入CSV文件的不同列中

Python 从多个文本文件中的数据计算输出,并将其写入CSV文件的不同列中,python,python-3.x,csv,Python,Python 3.x,Csv,我从文本文件不同列中的两个数字计算值(数字)。然后,我在多个文本文件上迭代,以执行相同的计算。我需要将输出写入CSV文件的不同列,其中每列对应于从单个文本文件获得的计算。我或多或少知道如何迭代不同的文件,但我不知道如何告诉Python写不同的列。欢迎提供任何指导。您可以利用提供延迟迭代的事实来非常有效地完成这项工作。您可以定义一个简单的生成器函数,用于为初始化该函数的文件的每一行进行计算。您还可以使用在单个上下文管理器中管理打开的文件: from contextlib import ExitSt

我从文本文件不同列中的两个数字计算值(数字)。然后,我在多个文本文件上迭代,以执行相同的计算。我需要将输出写入CSV文件的不同列,其中每列对应于从单个文本文件获得的计算。我或多或少知道如何迭代不同的文件,但我不知道如何告诉Python写不同的列。欢迎提供任何指导。

您可以利用提供延迟迭代的事实来非常有效地完成这项工作。您可以定义一个简单的生成器函数,用于为初始化该函数的文件的每一行进行计算。您还可以使用在单个上下文管理器中管理打开的文件:

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\u files

中的文件名顺序相同。请发布文件格式和预期输出的示例。写入csv很容易,更重要的是将inputszip和每个文件的计算安排在一起。如果您编写一个逐行计算的生成器,您甚至可能会对此感到懒惰。把结果写在CSV上,阅读并考虑这个例子,谢谢!我要试一试。