簡體   English   中英

opencv 考勤系統將學生標記為存在於 csv 問題

[英]opencv attendance system mark student as present in csv problem

我有一個用 opencv 制作的參加者系統,它可以工作,但我的問題是在 csv 文件中標記學生,目標是每天只標記學生一次

///////// 在閱讀了有關 csv 的更多信息后,我發現我的邏輯很糟糕。

這是解決我的問題的最新代碼

def markAttendance(name):
today = datetime.now().strftime("%d-%m-%Y")
if not path.exists('opencv/prezente/'+today+'.csv'):
    with open('opencv/prezente/'+today+'.csv', 'w') as file:
        file.write(f'{"nume"},{"timestamp"}')

    with open('opencv/prezente/'+today+'.csv', 'r+') as f:
        now = datetime.now().strftime("%d/%m/%Y,%H:%M")
        f.write(f'\n{name},{now}')
else:
    with open('opencv/prezente/'+today+'.csv', 'r+') as f:
        myDataList = f.readlines()
        row_count = sum(1 for row in myDataList)
        exista = []
        for line in myDataList:
            if name not in line:
                exista.append(name)
        if row_count == len(exista):
            now = datetime.now().strftime("%d/%m/%Y,%H:%M")
            f.write(f'\n{name},{now}')

所以這是我的markattendance function

def markAttendance(name):
  with open('opencv/attendance.csv', 'r+') as f:
    myDataList = f.readlines()
    for line in myDataList:
        entry = line.split(',')
        today = datetime.now().strftime("%d/%m/%Y")
       
        if name in line and entry[1] == today:
            print(entry[1]+" ai mai fost azi " + entry[2])  
            
           
        else:
            now = datetime.now().strftime("%d/%m/%Y,%H:%M")
            # f.write(f'\n{name},{now}')
            print("ciubaca")

我已經評論了 f.write 行,因為這是我的問題,從我的邏輯來看,如果條件為真,那部分不應該執行,但這是我在控制台中得到的

在此處輸入圖像描述

您要解決的具體問題是什么? 我的預感是你需要一個 if elif 語句而不是 if else 因為現在 else 語句可能會在名稱不在行中或 entry[1] 不在今天觸發時觸發:

def markAttendance(name):
    with open('opencv/attendance.csv', 'r+') as f:
        myDataList = f.readlines()
        for line in myDataList:
            entry = line.split(',')
            today = datetime.now().strftime("%d/%m/%Y")
   
            if name in line and entry[1] == today:
                print(entry[1]+" ai mai fost azi " + entry[2])  
        
            elif name not in line and entry[1] == today:
                now = datetime.now().strftime("%d/%m/%Y,%H:%M")
                # f.write(f'\n{name},{now}')
                print("ciubaca")

但我需要更多關於這個問題的細節來確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM