如何用Python在CSV文件中实现双列数据写入?
解决CSV两列写入问题
原代码存在几个关键问题导致无法正确写入两列数据:
- 打开文件时未指定写入模式,默认只读模式会引发权限错误
- 每次循环重复打开文件,且未将细料百分比与计算出的X值配对
- 初始化的
rows为空列表,写入的内容都是空数据
下面是修正后的代码,两种实现方式任选其一:
方式一:先收集所有数据再一次性写入(推荐)
这种方式更高效,适合数据量不大的场景:
import csv finespacking = 0.55 coarsepacking = 0.6 percentage_fines_agg = [0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60] # 收集每一行的两列数据:细料百分比 + 计算出的X值 rows = [] for item in percentage_fines_agg: x = (item/(1-item)) * (coarsepacking/finespacking) / (1-coarsepacking) rows.append([item, x]) # 写入CSV文件,newline=''避免多余空行 with open('tempmix.csv', 'w', newline='') as temp_mix_file: writer = csv.writer(temp_mix_file) writer.writerows(rows)
方式二:逐行写入
如果数据量很大,不想一次性占用内存,可以打开一次文件后逐行写入:
import csv finespacking = 0.55 coarsepacking = 0.6 percentage_fines_agg = [0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60] with open('tempmix.csv', 'w', newline='') as temp_mix_file: writer = csv.writer(temp_mix_file) for item in percentage_fines_agg: x = (item/(1-item)) * (coarsepacking/finespacking) / (1-coarsepacking) writer.writerow([item, x]) # 每次写入一行两列数据
注意:原代码中的d63fine和d63coarse变量未被使用,可根据实际需求保留或删除。
内容的提问来源于stack exchange,提问作者yahya
相关产品推荐
相关产品推荐

