使用python在csv中的每行末尾追加字典或值列表

2024-10-01 07:44:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在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 file screenshot


Tags: 文件csvfromimport标题oscv2dict
1条回答
网友
1楼 · 发布于 2024-10-01 07:44:27

以下是将列附加到现有CSV的基本示例:

data.csv(原件)

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

test.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

相关问题 更多 >