Python: чтение файлов CSV по одному и l oop через функции - PullRequest
0 голосов
/ 05 мая 2020

У меня есть папка с 3 разными CSV-файлами, например: car.csv home.csv и company.csv

У меня есть код, в котором я могу читать значения из файлов CSV, например: with open(car.csv, 'r') as carData:. ....

Я хочу, чтобы мой код открывал первый car.csv и выполнял все (myfunction), а затем читал следующий файл home.csv, а затем файл company.csv.

И, наконец, я хочу иметь 3 разных текстовых файла.

Я хочу:

inputData = './*csv' Так что мой код может читать файл без того, чтобы я делал это как inputData='./car.csv'

Второе, что я хочу иметь:

когда у меня есть 3 CSV-файла в одном каталоге, мой код должен читать первый и l oop через мои функции и выводить текстовый файл. После этого он должен прочитать второй файл csv и сделать это как первый

1 Ответ

0 голосов
/ 05 мая 2020

В этом коде мы читаем файлы CSV из каталога input_dir_name, применяем функцию sum_col и записываем выходные данные в тот же каталог, а имя выходных файлов начинается с out_ + input file name. Это нужно или укажите функцию в комментариях:

import os

input_dir_name = r"\..\input_directory_path...."

input_csv_names = [file_name for file_name in os.listdir(input_dir_name) if file_name.endswith('.csv')]

def sum_col(file_content):
    file_content = file_content[1:]

    file_content1 = [f.replace('\n', '').split(',') for f in file_content]

    file_content2 = [[int(f1[0]), int(f1[1])] for f1 in file_content1]

    out_column = [sum(f2) for f2 in file_content2]

    return out_column


for file_name in input_csv_names:
    print(f'working on file {file_name}')

    input_file_path = os.path.join(input_dir_name, file_name)
    with open(input_file_path, 'r') as file_obj:
        file_content = file_obj.readlines()

    output_column_value = sum_col(file_content)

    output_column_content = ['col3'] + [str(x) for x in output_column_value]

    output_file_content = []
    for i in range(len(output_column_content)):
        output_text = file_content[i].replace('\n', ',') + output_column_content[i] + '\n'
        output_file_content.append(output_text)

    output_file_path = os.path.join(input_dir_name, 'out_' + file_name)

    with open(output_file_path, 'w') as file_obj:
        for line in output_file_content:
            file_obj.write(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...