Отсутствующие заголовки в выходном файле csv (python)

Я пытаюсь вывести CSV-файл, но проблема в том, что заголовки исчезли, и я пытался просматривать мой код построчно, но я не знаю, что не так с моим кодом...

Мой пример данных: ABC.csv (при условии, что в нем несколько данных, поэтому я также добавляю код для его удаления)

KeyID,GeneralID
145258,KL456
145259,BG486
145260,HJ789
145261,KL456
145259,BG486
145259,BG486

Мой код:

import csv
import fileinput
from collections import Counter

file_path_1 = "ABC.csv"

key_id = []
general_id = []
total_general_id = []

with open(file_path_1, 'rU') as f:
    reader = csv.reader(f)
    header = next(reader)
    lines = [line for line in reader]
    counts = Counter([l[1] for l in lines])


new_lines = [l + [str(counts[l[1])] for l in lines]
with open(file_path_1, 'wb') as f:
    writer = csv.writer(f)
    writer.writerow(header + ['Total_GeneralID'])
    writer.writerows(new_lines)

with open(file_path_1, 'rU') as f:
    reader = csv.DictReader(f)
    for row in reader:
        key_id.append(row['KeyID'])
        general_id.append(row['GeneralID'])
        total_general_id.append(['Total_GeneralID'])

New_List = [[] for _ in range(len(key_id))]
for attr in range(len(key_id)):
    New_List[attr].append(key_id[attr])
    New_List[attr].append(general_id[attr])
    New_List[attr].append(total_general_id[attr])

with open('result_id_with_total.csv', 'wb+') as newfile:
    header = ['KEY ID', 'GENERAL ID' , 'TOTAL GENERAL ID']
    wr = csv.writer(newfile, delimiter=',', quoting = csv.QUOTE_MINIMAL)
    wr.writerow(header) #I already add the headers but it won't work. 
    for item in New_List:
        if item not in newfile:
            wr.writerow(item)

К сожалению, мой вывод будет таким (result_id_with_total.csv);

145258,KL456,2
145259,BG486,1
145260,HJ789,1
145261,KL456,2

Чего я пытаюсь достичь;

KEY ID,GENERAL ID,TOTAL GENERAL ID 
145258,KL456,2
145259,BG486,1
145260,HJ789,1
145261,KL456,2

Моя главная проблема в этом коде:

wr.writerow(header) 

не сработает

1 ответ

Это связано с открытием файла с wb+ (напишите байты). Потому что, когда вы пишете файл в байтовом режиме, вам нужно передать ему массив байтов, а не строк.

Я получаю эту ошибку в консоли при запуске:

TypeError: a bytes-like object is required, not 'str'

Попробуйте изменить wb+ чтобы просто wэто делает трюк.

with open('result_id_with_total.csv', 'w') as newfile:
    header = ['KEY ID', 'GENERAL ID' , 'TOTAL GENERAL ID']
    wr = csv.writer(newfile, delimiter=',', quoting = csv.QUOTE_MINIMAL)
Другие вопросы по тегам