[英]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.