我想要一些帮助来编写一个记录时间的python脚本&;我开始工作、打开电脑以及关机的日期
到目前为止,我只做到了以下几点: -在一个脚本中,我编写了一个代码来记录我早上到达的时间(以csv文件输出) -在一个单独的脚本上,我复制了相同的代码,但我在晚上运行它(在另一个csv文件中输出) -第三,第三个脚本使用pandas库组合成两个文件
代码:
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])
代码:
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])
代码:
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)
您可能希望编辑您的问题,以描述您实际失败的地方
在不知道这一点的情况下,我看到的一般问题是,没有什么可以确保您将正确的超时与每个特定的时间匹配
听起来好像您打算手动运行“输入”和“输出”脚本,或者从登录和注销事件触发它们。但很容易以遗漏或额外的条目而告终:您可能会忘记并“输入”两次,或者您可能会多次登录(或者shell,如果以这种方式触发的话),或者您的系统可能会在您可以执行预期的“退出”之前崩溃
当这种情况发生时,您的两个日志文件将不同步,我很确定一个普通的panda合并(没有left_on和right_on,或“on”参数)将按顺序配对记录。除非它们完全同步,否则这是行不通的
更安全的方法是将所有事件写入同一个文件,添加第三列,显示“IN”或“OUT”。然后,当您想要合并时,您至少可以保证在每个“IN”之后的下一个“OUT”是最好使用的。通过直观地扫描该文件,很容易发现错误。程序还可以轻松地检查文件是否交替输入输出,如果没有,则准确报告问题所在
我已经为类似的任务做了很长时间了。当我打开和关闭每个*nix shell窗口时会触发日志记录,因此我可能会同时激活多个“in”;但是仍然很容易选择正确的范围,只需从任何运行中的事件中选择第一个,然后是最近的后续运行中的最后一个
当然,即使这样,你也可以在周一打卡上班,直到周五打卡下班时才打卡。几乎任何解决方案都会让你一周24小时都在工作。如果您担心这种情况,您的合并可能会对任何看起来太长的工作班次发出警告
希望有帮助。如果没有,请明确说明当前的问题是什么
相关问题 更多 >
编程相关推荐