You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现向CSV指定行列添加数据及日期列自动填充

生成指定格式考勤CSV的Python实现

需求说明

  • 收集4个用户指纹编号,写入CSV的fingerprint列4行
  • 输入统一的年份和月份,填充到对应列的所有行
  • 日期列(1-31)填充规则:
    • 行与行之间交替以x/6开头循环填充
    • 当天为周五时,固定填充x
  • 日期列标题(1-31)无引号,精准控制数据写入指定行列

修正后的完整代码

import csv
import datetime

# 收集4个指纹编号
fingerprints = []
for _ in range(4):
    fp = input("输入指纹编号: ").strip()
    fingerprints.append(fp)

# 收集统一的年、月
year = input("输入年份: ").strip()
month = input("输入月份: ").strip()

def generate_day_values(start_char, year, month):
    """生成一行的日期列值,遵循交替+周五固定x的规则"""
    day_values = []
    for day in range(1, 32):
        try:
            # 计算当天是星期几,周五对应isoweekday()=5
            dt = datetime.date(int(year), int(month), day)
            if dt.isoweekday() == 5:
                day_values.append('x')
            else:
                # 按交替规则填充
                if (day - 1) % 2 == 0:
                    day_values.append(start_char)
                else:
                    day_values.append('6' if start_char == 'x' else 'x')
        except ValueError:
            # 处理当月不存在的日期(如2月无31号)
            day_values.append('')
    return day_values

def main():
    # 构造完整表头
    headers = ['fingerprint', 'month', 'year'] + [str(d) for d in range(1, 32)]
    
    with open('shift.csv', 'w', newline='', encoding='utf-8') as file:
        # 关闭引号输出,确保日期标题无引号
        writer = csv.writer(file, quoting=csv.QUOTE_NONE, escapechar='\\')
        writer.writerow(headers)
        
        # 为每个指纹生成对应行数据,交替起始字符
        start_chars = ['x', '6', 'x', '6']
        for idx, fp in enumerate(fingerprints):
            day_vals = generate_day_values(start_chars[idx], year, month)
            row = [fp, month, year] + day_vals
            writer.writerow(row)

if __name__ == "__main__":
    main()

代码关键说明

  1. 指纹收集:用列表存储4个指纹输入,避免原代码中覆盖前序输入的问题
  2. 表头构造:直接生成1到31的字符串列表作为日期列标题,配合csv.QUOTE_NONE确保标题无引号
  3. 日期值生成:
    • 通过datetime.date验证日期合法性,自动跳过当月不存在的日期
    • 优先判断周五,固定填充x;非周五则按行交替规则填充x/6
  4. 数据写入:逐行拼接指纹、年月、日期值,精准写入对应列位置

内容的提问来源于stack exchange,提问作者Jwtiyar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:52:41