用于为付费期创建CSV的Python脚本

时间:2015-09-27 17:34:04

标签: python csv

我正在生成一个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])

1 个答案:

答案 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])