我如何建立一个正常运行的时间记录器(切入和切出)

时间:2019-07-03 13:44:46

标签: python pandas date time

我需要一些帮助来编写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)

1 个答案:

答案 0 :(得分:0)

您可能想要编辑问题以描述实际上导致您失败的原因。

在不知不觉中,我看到的普遍问题是没有什么可以确保您将正确的超时时间与每个特定的时间匹配。

听起来您打算手动运行“输入”和“输出”脚本,或者可能是从登录和注销事件中触发它们。但是,很容易遇到遗漏或多余的条目:您可能会忘记两次输入时钟,或者可能进行多次登录(如果触发,则是shell),或者您的系统可能崩溃,然后才能执行预期的操作时钟“出”。

当发生这种情况时,您的两个日志文件将不同步,我非常确定普通的熊猫合并(没有left_on和right_on或'on'参数)会按顺序将记录配对。除非它们完美同步,否则这将无法正常工作。

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

很长时间以来,我已经完成了类似任务。当我打开和关闭每个* nix shell窗口时,将触发日志记录,因此我可能一次有多个“ in”活动。但要选择合适的范围仍然很容易-只需从任何IN事件运行中获取第一个,然后获取最近的OUT事件运行中的最后一个。

当然,即使那样,您也可以在星期一开始计时,并且某种程度上根本无法计时到星期五,直到您结束计时。使用几乎所有解决方案,您一周都可能一天24小时工作。如果您担心这种情况,那么合并可能会针对似乎太长的工作班次发出警告。

希望有帮助。如果不是,请通过确切说明当前问题是什么来澄清问题。