csv.writerow 似乎无法写入行
Posted
技术标签:
【中文标题】csv.writerow 似乎无法写入行【英文标题】:csv.writerow appears to be failing to write rows 【发布时间】:2021-06-07 09:20:01 【问题描述】:我有一个脚本可以将近 800,000 行写入各种 CSV 文件。
for col in data:
with open('output/.csv'.format(col), mode, encoding='utf-8', newline='') as f:
writer = csv.writer(f, lineterminator = '\n')
if mode == 'w':
writer.writerow(headers)
for row in data[col]:
writer.writerow(row)
在现代机器上,这似乎可以正常工作并写入所有行。
但是,在较旧的机器上(使用机械硬盘),总共缺少大约 35% 到 40% 的行。
这是机器列表,以及写入的总行数(共 815143 行):
Macbook pro osx 10.15(16gb ram, SSD) - 815143 Windows 10(32gb 内存,NVme)- 815143 Windows 10(4GB 内存,硬盘)- 543737 Windows 10(4GB 内存,硬盘)- 501335是不是我做错了什么导致了这种情况?
还是要考虑写入失败?当使用csv.write
?
【问题讨论】:
如果 Python 没有引发任何异常,那么我建议运行适用于 Windows 10 的任何磁盘检查实用程序。 这不太可能与您的磁盘有关,更有可能是您的会计(您如何计算行数?)或您的输入数据(可能并不总是相同)! @ti7 我正在使用wc -l output/*
(这包含所有的csv文件)我认为wc
是准确的
【参考方案1】:
这个问题的原因似乎是 Python 的输出缓冲区。
https://blog.finxter.com/what-is-python-output-buffering-and-how-to-disable-it/
在运行 python 时传递 -u
标志似乎可以解决 csv 行未在较慢机器上写入的问题。
例如:
python -u file.py argument
希望这对遇到相同问题的其他人有所帮助。
【讨论】:
以上是关于csv.writerow 似乎无法写入行的主要内容,如果未能解决你的问题,请参考以下文章