python - csv 文件不会在 while 循环期间创建,仅在使用 csv.writer 执行之后
问题描述
所以我试图从我的arduino中读取数据,但它似乎只在我的脚本停止执行后才创建文件。通过手动停止它或仅运行整个脚本。
现在我的问题主要是它如何在 while 循环期间创建文件并附加到它。为什么现在不工作?
import csv
import time
while True:
row = ['1', '2', '3']
with open('results.csv', 'a') as csvfile:
csv_writer = csv.writer(csvfile)
csv_writer.writerow(row)
time.sleep(1)
上面的代码块可用于重现此行为。我想在使用 while 循环而不是在执行之后创建 results.csv。
解决方案
with open('results.csv', 'a') as csvfile:
csv_writer = csv.writer(csvfile)
csv_writer.writerow(row)
time.sleep(1)
写入行后尝试关闭文件。
这会将所有数据刷新到磁盘。
如果你想在循环期间强制刷新到磁盘,你必须在文件上调用某种类型的刷新方法(不确定这是 Python 中的什么函数,但我认为它是csvfile.flush()
)。
这是有关文件缓冲区和将数据刷新到磁盘的更多信息。
例如,以下代码将在每次迭代中将数据刷新到磁盘,但也会减慢整个过程,因为文件缓冲的所有优点都消失了:
while True:
row = ['1', '2', '3']
with open('results.csv', 'a') as csvfile:
csv_writer = csv.writer(csvfile)
csv_writer.writerow(row)
csvfile.flush()
time.sleep(1)
推荐阅读
- javascript - React 组件事件处理函数没有收到来自 Redux Store 的最新值
- amazon-web-services - 如何使用 S3 创建仅限会员的页面?
- python - 为什么在使用 Else 而不是 Elif 时会出现语法错误?
- python - Pandas df.mode ValueError:错误传递的项目数 5,位置暗示 1
- android - 系统服务在 onCreate() 之前对活动不可用,Android RecyclerView 在 Kotlin 片段中
- java - 创建exe文件时出现异常
- asp.net - Blazor - 在 mousedown 事件后用鼠标移动时关闭文本选择
- html - 如何从 json 对象呈现 html 表
- matrix - 如何使用 as.matrix 函数创建矩阵?
- reactjs - Material UI - 背景触发 onClick 它的孩子