暑假开始实习,为了记录自己每月的出勤情况,写了一个小程序。
原理很简单,就是 python 对文本文件和日期的处理。
main.py 程序代码如下:
# -*- coding:utf-8 -*-
# author:青天诀
import codecs
import datetime
import re
#读取文本文件中的签到记录
def readRecord(path):
with open(path,'r+') as f:
f=open(path,'r+')
data=f.readline() # 读取文件第一行,并判断第一行是否有隐藏的BOM_UTF8
if data[:3]==codecs.BOM_UTF8:
data=data[3:]
print data.decode("utf-8")
for data in f:
print data.decode("utf-8")
#计算工作日期,和周几
def workDate(*time):
if time:
now=datetime.datetime.strptime(time[0],'%Y-%m-%d')
else:
now=datetime.datetime.now()
week=now.weekday()
weeks=("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")
now=str(now.strftime('%Y-%m-%d'))
return (now,weeks[week])
#计算当前工作天数(id)
def workCount(file):
count = 0
for count, line in enumerate(file):
pass
count += 1
return str(count)
def lastLine(file):
lines=file.readlines()
data=lines[len(lines)-1].decode('utf-8')
ary=re.split(r'\s+',data)
return ary[1]
# 写入文本文件
# time格式为: 2015-7-22
def writeRecord(path,*time):
with open(path,'a+') as f:
count=workCount(f)
if time:
(mydate,week)=workDate(time[0])
else:
(mydate,week)=workDate()
f.seek(0)
if lastLine(f)!=mydate:
f.write(count.ljust(12)+(mydate.encode('utf-8')).ljust(16)+week.ljust(16)+'true'+'\n')
print u"签到完成,哈哈!"
else:
print u"请不要重复签到!!!"
writeRecord('record.txt')
readRecord('record.txt')
为了每天让程序自动完成签到,写了一个atuo.bat文件,运行main.py。
e:
cd E:\long\record
start pythonw main.py
exit
然后将auto.bat发送快捷方式到桌面,然后将快捷方式添加到开机启动目录
添加时,需要找到启动的目录,对着启动 右击 》属性 》常规,位置那里就是启动所在目录,打开后,将auto.bat的快捷方式复制到目录下,就会在开机时自动运行这个bat文件了。
添加快捷方式后,启动里就会出现我们复制进去的快捷方式,如下图:
PS:main.py 程序添加了判断,每天只会签到一次,就算电脑每天重启几次,也不会被重复签到的,放心使用了。