Python CSVDictWriter覆盖数据? 错误原因bug 前的 CSV 格式编辑后的CSV格式代码

问题描述

过去 3 个月我一直在运行 Python 脚本。简单的抓取工具,可获取当天收集的日期、点和当前时间,并使用 DictWriter 将其写入 CSV。

错误原因

昨天,我不得不打开 CSV(使用 Apple 的认 Numbers 应用程序)并删除最新的日期、点和时间条目。从那时起,它一直将新条目附加到前一行,创建额外的列。我没有编辑任何代码

让我尝试创建问题的可视化:

bug 前的 CSV 格式

最上面一行是标题

| Date   | Points | Time Completed |
| Mar 29 | 15141  | 08:55 AM       |
| Mar 30 | 15411  | 08:56 PM       |
| Mar 31 | 15681  | 11:08 AM       |
| Apr 01 | 15911  | 10:40 AM       |

编辑后的CSV格式

| Date   | Points | Time Completed  |       |          |
| Mar 29 | 15141  | 08:55 AM        |       |          |
| Mar 30 | 15411  | 08:56 PM        |       |          |
| Mar 31 | 15681  | 11:08 AM        |       |          |
| Apr 01 | 15911  | 10:40 AMApril02 | 16276 | 07:57 PM |

代码

我没有更改之前/之后的任何代码

def write_csv(points):
    headers = ['Date','Points','Time completed']
    today = date.today().strftime("%B %d")
    Now = datetime.Now().strftime("%I:%M %p")
    with open('/Users/Shared/PointsTracker.csv','a') as PointsTracker:
        writer = csv.DictWriter(PointsTracker,fieldnames=headers)
        
        writer.writerow({
            headers[0]: today,headers[1]: points,headers[2]: Now
        })

解决方法

编辑文件时删除了尾随换行符。编辑文件并将其放回原处。