Добавление имени файла csv в столбец в python (200 файлов) - PullRequest
0 голосов
/ 09 июля 2020

У меня 200 файлов с датами в имени файла. Я хотел бы добавить дату из этого имени файла в новый столбец в каждом файле.

Я создал макрос в Python:

import pandas as pd
import os
import openpyxl
import csv

os.chdir(r'\\\\\\\')

for file_name in os.listdir(r'\\\\\\'):
    with open(file_name,'r') as csvinput:
        reader = csv.reader(csvinput)

    all = []
    row = next(reader)
    row.append('FileName')
    all.append(row)

    for row in reader:
        row.append(file_name)
        all.append(row)

    with open(file_name, 'w') as csvoutput:
        writer = csv.writer(csvoutput, lineterminator='\n')
        writer.writerows(all)

if file_name.endswith('.csv'):
    workbook = openpyxl.load_workbook(file_name)

    workbook.save(file_name)
csv_filename = pd.read_csv(r'\\\\\\')
csv_data= pd.read_csv(csv_filename, header = 0)
csv_data['filename'] = csv_filename`

Прямо сейчас я вижу "InvalidFileException: File is not zip-файл », и только первый файл добавил столбец с именем файла.

Подскажите, пожалуйста, что я делаю не так? Кстати, я использую Python 3.4.

Большое спасибо, Лукаш

1 Ответ

0 голосов
/ 13 июля 2020

Первая проблема, этот раздел:

with open(file_name, 'w') as csvoutput:
    writer = csv.writer(csvoutput, lineterminator='\n')
    writer.writerows(all)

должен быть с отступом, чтобы его можно было включить в for l oop. Теперь он выполняется только один раз после l oop. Вот почему вы получаете только один выходной файл.

Вторая проблема, исключение, вероятно, вызвано openpyxl.load_workbook(file_name). Предположительно openpyxl может открывать только реальные файлы Excel (которые представляют собой файлы .zip с другим расширением), но не файлы CSV. Почему вы все-таки хотите его открыть и сохранить? Думаю, вы можете просто удалить эти три строчки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...