[英]Updating a value in a CSV file using CSV module
我正在建立一个员工管理系统。 我想跟踪员工进出办公室的所有时间。 我正在使用 csv 文件读取和写入数据。
下面是代码:
Class Employee:
def __init__(self, self.name, self.ID, self.EntryTime=None, self.Exittime=None)
self.name = name
self.ID = ID
self.EntryTime = EntryTime
self.ExitTime = ExitTime
def entry(self):
self.ID = input("Enter your ID:)
self.key = input("Enter your key: )
# If ID and key match. Didn't write that part for simplicity.
self.EntryTime = datetime.datetime.now().time()
self.ExitTime = None
# Entering Employee's entry into a register.
with open("Register.csv", "a", newline="") as register_file:
csv_writer = csv.writer(register_file, delimiter=",")
csv_writer.writerow([self.name, self.ID, self.EntryTime, self.ExitTime])
接下来,当调用退出函数时,我想将特定条目的 ExitTime 从 None 更改为该 ExitTime。 以下是我到目前为止所尝试的。
def exit(self):
self.ID = input("Enter your ID:)
# If self.EntryTime is not None. Didn't write that part for simplicity.
self.key = input("Enter your key: )
# If ID and key match. Didn't write that part for simplicity.
self.ExitTime = datetime.datetime.now().time()
# Updating the exit time in register.
r = csv.reader(open("Register.csv"))
lines = list(r)
for lst in range(len(lines)):
if lines[lst][1] == self.ID and lines[lst][2] == self.EntryTime:
lines[lst][3] = self.ExitTime
break
writer = csv.writer(open("Register.csv", "w"))
writer.writerows(lines)
但由于某种原因,调用退出函数时退出时间值不会改变。 为什么会这样?
这是因为self.EntryTime
的类型是日期时间,但lines[lst][2]
是字符串。 您可以将条件更改为
if lines[lst][1] == self.ID and lines[lst][2] == str(self.EntryTime):
lines[lst][3] = self.ExitTime
break
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.