公司加班报销说明自动生成辅助脚本
大约 2 分钟
公司加班报销说明自动生成辅助脚本
公司每个月加班报销说明 每次都需要手动编写,虽然一个月一次,但是每次需要小心编写仔细核对,比较麻烦,因此写一个小脚本,不算复杂但是很方便
输入文件内容格式
eg:
宋彬彬
2018-06-26
2018-06-27
2018-06-29
2018-07-02
2018-07-03
2018-07-04
2018-07-05
2018-07-06
2018-07-09
2018-07-10
2018-07-11
2018-07-12
2018-07-13
2018-07-19
2018-07-20
雷勋
2018-07-05
2018-07-06
2018-07-09
2018-07-10
2018-07-11
2018-07-12
2018-07-13
2018-07-19
2018-07-20
颜克良
2018-07-06
2018-07-09
2018-07-10
2018-07-11
输出内容格式
不带换行,谁报销的只要再下面内容前面加一个自己的工号就可以了:SXC2010 XXXX(XXXX为下面生成内容)
2018-06-26:宋彬彬 共计1人; 2018-06-27:宋彬彬 共计1人; 2018-06-29:宋彬彬 共计1人; 2018-07-02:宋彬彬 共计1人; 2018-07-03:宋彬彬 共计1人; 2018-07-04:宋彬彬 共计1人; 2018-07-05:宋彬彬、雷勋 共计2人; 2018-07-06:宋彬彬、雷勋、颜克良 共计3人; 2018-07-09:宋彬彬、雷勋、颜克良 共计3人; 2018-07-10:宋彬彬、雷勋、颜克良 共计3人; 2018-07-11:宋彬彬、雷勋、颜克良 共计3人; 2018-07-12:宋彬彬、雷勋 共计2人; 2018-07-13:宋彬彬、雷勋 共计2人; 2018-07-19:宋彬彬、雷勋 共计2人; 2018-07-20:宋彬彬、雷勋 共计2人;
脚本源码
#coding:utf-8
'''
Created on 2018年7月30日
@author: leixun
'''
import sys
def process_file(r):
nowname = ""
dict = {}
result = ""
for line in r:
line = line.strip()
if line.startswith('#') or not len(line):
continue
if line.startswith(('2')): ## 必然是21世纪2018-2099
if line not in dict or not len(dict[line]):
dict[line] = nowname
elif str(dict[line]).endswith('、'):
dict[line] = str(dict[line])+nowname
else:
dict[line] = str(dict[line]) + "、" + nowname
else:
nowname = line
## 取出按时间大小排序的键名
keys = dict.keys()
keys.sort()
## 循环拼接报销说明格式
for key in keys:
result = result+key+':'+dict[key]+" 共计"+str(str(dict[key]).count('、')+1)+"人; "
return result
if __name__=="__main__":
print "start"
input_file=open(sys.argv[1],'r')
result = process_file(input_file)
input_file.close()
output_file = open("result.txt",'wb')
print result
output_file.write(result)
output_file.close()
命令执行
搭建python环境,新建python文件 复制源码到该文件 然后执行:
python XXX.py(源码文件) xxx(输入文件的名字)