Python CSV (DictWriter) 覆盖数据?
Python CSV (DictWriter) overwriting data?
过去 3 个月我有一个 Python 脚本 运行。抓取当天收集的日期、点和当前时间并使用 DictWriter
.
将其写入 CSV 的简单抓取工具
错误原因
昨天,我不得不打开 CSV(使用 Apple 默认的 Numbers 应用程序)并删除最新的日期、点数和时间条目。从那时起,它一直将新条目附加到前一行,创建额外的列。我没有编辑任何代码。
让我尝试创建问题的可视化:
错误之前的 CSV 格式
顶行是 headers
| 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 |
代码
我没有更改 before/after 中的任何代码。
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
})
编辑文件时删除了结尾的换行符。编辑文件并放回去。
过去 3 个月我有一个 Python 脚本 运行。抓取当天收集的日期、点和当前时间并使用 DictWriter
.
错误原因
昨天,我不得不打开 CSV(使用 Apple 默认的 Numbers 应用程序)并删除最新的日期、点数和时间条目。从那时起,它一直将新条目附加到前一行,创建额外的列。我没有编辑任何代码。
让我尝试创建问题的可视化:
错误之前的 CSV 格式
顶行是 headers
| 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 |
代码
我没有更改 before/after 中的任何代码。
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
})
编辑文件时删除了结尾的换行符。编辑文件并放回去。