Добавить словарь или список значений в конце каждой строки в CSV, используя python - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу добавить список значений в конец каждой строки файла CSV, кроме заголовка.

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

import tensorflow
from fer.fer import FER
import cv2
from os import listdir
from os.path import isfile, join
import numpy
import csv



f1 =     open("C:/Yasir/Thesis/4/FaceDetectionLatest/bin/Debug/Data/demoScoringData9.csv",   "a+")
reader = csv.reader(f1)
images = numpy.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
    images[n] = cv2.imread( join(mypath,onlyfiles[n]) )
    # cv2.imshow(join(mypath,onlyfiles[n]),0)
    img = cv2.imread( join(mypath,onlyfiles[n]) )
    detector = FER()
    emotion = detector.detect_emotions(img)
    dict = emotion[0]
    emoList = dict['emotions']
    dict_writer = csv.DictWriter(f1, emoList)
    dict_writer.writerow(emoList)

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

{«сердитый»: 0,15, «отвращение»: 0,0, «страх»: 0,05, «счастливый»: 0,06, «грустный»: 0,24, «сюрприз»: 0,02, «нейтральный»: 0,49}

Я также делюсь скриншотом моего скриншота файла csv

1 Ответ

0 голосов
/ 01 марта 2020

Вот базовый c пример добавления столбцов к существующему CSV:

data.csv (оригинал)

col1,col2,col3
1,2,3
4,5,6
7,8,9

тест. py

import csv

with open('data.csv',newline='') as fin:
    r = csv.DictReader(fin)
    lines = list(r)

with open('data.csv','w',newline='') as fout:
    # Create writer with existing column headers plus new column headers
    w = csv.DictWriter(fout,fieldnames=r.fieldnames + 'angry disgust fear happy sad surprise neutral'.split())
    w.writeheader()

    for line in lines:
        emolist = {'angry': 0.15, 'disgust': 0.0, 'fear': 0.05, 'happy': 0.06, 'sad': 0.24, 'surprise': 0.02, 'neutral': 0.49}
        line.update(emolist)
        w.writerow(line)

data.csv (окончательный)

col1,col2,col3,angry,disgust,fear,happy,sad,surprise,neutral
1,2,3,0.15,0.0,0.05,0.06,0.24,0.02,0.49
4,5,6,0.15,0.0,0.05,0.06,0.24,0.02,0.49
7,8,9,0.15,0.0,0.05,0.06,0.24,0.02,0.49
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...