每月经常性费用的Python脚本

时间:2015-09-29 16:48:41

标签: python csv

我正在尝试使用Python生成一个显示5名员工每月费用数据的csv。以下是我的代码:

#!/usr/bin/env python

import csv
import math

emp_id = 0
year = 2017
start_month = 1
months_to_add = 12
Amount = 50.00
emp_per_month = 5
output_file = 'Monthly.csv'

def format_emp_id(id):
    return "E%03d" % (id,)

with open(output_file, 'wb') as csvfile:
    writer = csv.writer(csvfile,
                        delimiter='\t',
                        quotechar='"',
                        quoting=csv.QUOTE_MINIMAL)

    writer.writerow(['ID', 'Date', 'Amount'])

    for month in range(start_month, months_to_add + 1):
        date = "%d-%02.d-%02.d" % (year, month, 1)
        for install in range(int(emp_per_month)):
            emp_id += 1
            writer.writerow([format_emp_id(emp_id), date, Amount])
        emp_per_month = 5

但是,这段代码给出了以下输出:

 ID  |    Date    |  Amount   |
E001 | 2015-01-01 |   50.00   |
E002 | 2015-01-01 |   50.00   |
E003 | 2015-01-01 |   50.00   |
E004 | 2015-01-01 |   50.00   |
E005 | 2015-01-01 |   50.00   |
E006 | 2015-02-01 |   50.00   |
E007 | 2015-02-01 |   50.00   |
E008 | 2015-02-01 |   50.00   |
E009 | 2015-02-01 |   50.00   |
E010 | 2015-02-01 |   50.00   |

但是,这不是我需要做的。我需要的是员工ID E001-E005每个月重复一次,而不是继续增加员工ID超过E005。

请告知我纠正此问题所需的修订。

2 个答案:

答案 0 :(得分:1)

添加

emp_id = 1
在你的for循环开始时

。这将重置每个monch的id值,以便每个月从一个月开始。

答案 1 :(得分:1)

我会将最里面的for循环更改为:

for emp_id in range(1, emp_per_month+1):
    writer.writerow([format_emp_id(emp_id), date, Amount])