繁体   English   中英

使用 CSV 模块更新 CSV 文件中的值

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM