我正在生成一个python脚本来快速创建一个csv表来记录员工薪资数据。
下表是员工ID 001的2015年薪资表示例。对于薪资期间2,或2月,期间6(6月),期间9(9月) - 我们发放奖金,反映在"量"列。
ID | Description| Date | Status | Amount
001 | Pay period | 1/31/2015 | 1 | 50.00
001 | Pay period | 2/28/2015 | 1 | 100.00
001 | Pay period | 3/31/2015 | 1 | 50.00
001 | Pay period | 4/40/2015 | 1 | 50.00
001 | Pay period | 5/31/2015 | 1 | 50.00
001 | Pay period | 6/30/2015 | 1 | 100.00
001 | Pay period | 7/31/2015 | 1 | 50.00
001 | Pay period | 8/31/2015 | 1 | 50.00
001 | Pay period | 9/30/2015 | 1 | 100.00
001 | Pay period | 10/31/2015| 1 | 50.00
001 | Pay period | 11/30/2015| 1 | 50.00
001 | Pay period | 12/31/2015| 1 | 50.00
我希望能够快速生成具有此结构的csv,该结构自动为每个月写入行,并考虑到2月,6月和9月的特殊奖励支付期。
我的代码是这样,但我无法进一步考虑特殊月份的不同处理方法,以及如何自动计算每个月的最后一天作为自动增量:
#!/usr/bin/env python
import csv
ID = 0
month = 0
year = 2015
with open('Employee.csv', 'wb') as csvfile:
writer = csv.writer(csvfile, delimiter='\t', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerow(['ID', 'description', 'date', 'status', 'amount'])
for month in range(1, 13):
date = "%d-%02.d-%02.d" % (year, month, 1)
for install in range(100):
Pay Period += 1
writer.writerow([ID(ID), 'Pay period', date, install_fee])
答案 0 :(得分:2)
以下代码使用日历中的monthrange
来获取该月的最后一天。
我不确定你想要为奖金月做什么,所以我现在只用pass
填写它。
from calendar import monthrange
with open('Employee.csv', 'wb') as csvfile:
writer = csv.writer(csvfile,
delimiter='\t',
quotechar='"',
quoting=csv.QUOTE_MINIMAL)
writer.writerow(['ID', 'description', 'date', 'status', 'amount'])
for month in range(1, 13):
date = "%d-%02.d-%02.d" % (year, month, monthrange(year, month)[1])
if month in [2, 6, 9]: # Special months
pass # Add bonus
for install in range(100):
Pay Period += 1
writer.writerow([ID(ID), 'Pay period', date, install_fee])