我如何构建一个功能正常的时间记录器(时钟输入和时钟输出)

2024-03-29 08:26:18 发布

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

我想要一些帮助来编写一个记录时间的python脚本&;我开始工作、打开电脑以及关机的日期

到目前为止,我只做到了以下几点: -在一个脚本中,我编写了一个代码来记录我早上到达的时间(以csv文件输出) -在一个单独的脚本上,我复制了相同的代码,但我在晚上运行它(在另一个csv文件中输出) -第三,第三个脚本使用pandas库组合成两个文件

  1. 时钟编码:

代码:

def clockin():
    import datetime
    import time
    currentDate = datetime.date.today()
    currentTime_in = datetime.datetime.now().time()

    import csv
    with open('Clockin.csv', mode ='a') as Clockin:
        Clockin_writer = csv.writer(Clockin, delimiter = ',', quotechar ='"', quoting = csv.QUOTE_MINIMAL)
        Clockin_writer.writerow([currentDate, currentTime_in])
  1. 时钟停止代码:

代码:

def clockout():
    import datetime
    import time

    currentDate = datetime.date.today()
    currentTime_out = datetime.datetime.now().time()

    import csv
    with open('Clockout.csv', mode ='a') as Clockout:
        Clockout_writer = csv.writer(Clockout, delimiter = ',', quotechar ='"', quoting = csv.QUOTE_MINIMAL)
        Clockout_writer.writerow([currentDate, currentTime_out])
  1. 合并两个文件:

代码:

def timesheet():
    import pandas as pd

    a = pd.read_csv("Clockin.csv")
    b = pd.read_csv("Clockout.csv")
    merged = a.merge(b)
    merged.to_csv("timesheet.csv", index = False)

Tags: 文件csv代码import脚本datetimetimedef
1条回答
网友
1楼 · 发布于 2024-03-29 08:26:18

您可能希望编辑您的问题,以描述您实际失败的地方

在不知道这一点的情况下,我看到的一般问题是,没有什么可以确保您将正确的超时与每个特定的时间匹配

听起来好像您打算手动运行“输入”和“输出”脚本,或者从登录和注销事件触发它们。但很容易以遗漏或额外的条目而告终:您可能会忘记并“输入”两次,或者您可能会多次登录(或者shell,如果以这种方式触发的话),或者您的系统可能会在您可以执行预期的“退出”之前崩溃

当这种情况发生时,您的两个日志文件将不同步,我很确定一个普通的panda合并(没有left_on和right_on,或“on”参数)将按顺序配对记录。除非它们完全同步,否则这是行不通的

更安全的方法是将所有事件写入同一个文件,添加第三列,显示“IN”或“OUT”。然后,当您想要合并时,您至少可以保证在每个“IN”之后的下一个“OUT”是最好使用的。通过直观地扫描该文件,很容易发现错误。程序还可以轻松地检查文件是否交替输入输出,如果没有,则准确报告问题所在

我已经为类似的任务做了很长时间了。当我打开和关闭每个*nix shell窗口时会触发日志记录,因此我可能会同时激活多个“in”;但是仍然很容易选择正确的范围,只需从任何运行中的事件中选择第一个,然后是最近的后续运行中的最后一个

当然,即使这样,你也可以在周一打卡上班,直到周五打卡下班时才打卡。几乎任何解决方案都会让你一周24小时都在工作。如果您担心这种情况,您的合并可能会对任何看起来太长的工作班次发出警告

希望有帮助。如果没有,请明确说明当前的问题是什么

相关问题 更多 >