导入CSV作为队列执行增删首项操作时仅显示新增值无法更新原队列
问题根因
- 读取CSV逻辑错误:
f.read()会将整个CSV文件内容读取为单个完整字符串,你直接用[queue1]生成列表时,整个原队列的所有数值都被打包成了列表的第一个元素,而非每个数值单独作为列表元素。后续执行pop(0)时直接把所有原队列数据全部删除,自然只剩最后追加的diff值1。 - 缺少数据类型转换:从CSV读取的内容默认是字符串类型,未做转换无法直接参与数值计算。
- 未显式关闭文件句柄,存在资源泄漏风险。
修复代码
import numpy as np # 用with上下文管理器自动处理文件关闭,按规则拆分CSV内容,转换为浮点型 with open('qdiff.csv','r') as f: content = f.read().strip() # 按逗号拆分适配逗号分隔CSV,若为每行一个数值可替换为split('\n') queue = [float(x) for x in content.split(',') if x.strip()] print(queue) logB = 10 logTV = 9 diff = logB - logTV queue.pop(0) queue.append(diff) mean = sum(queue) / len(queue) std = np.std(queue) print(queue)
注意事项
- 如果CSV包含表头,需要在拆分后跳过第一个元素再做类型转换
- 可根据你的CSV实际存储格式,灵活调整拆分规则
内容的提问来源于stack exchange,提问作者Casey Niblett
相关产品推荐
相关产品推荐

