这是我正在阅读/写入的csv的一些示例数据:
ALTIMA_SD,2014,12,Promoter,Promoter,3/5/2015
ALTIMA_SD,2015,3,Promoter,Promoter,3/5/2015
PATHFINDER,2014,12,Promoter,Promoter,3/5/2015
我想在前两个之间添加一列,以便最终产品看起来像这样:
ALTIMA_SD,Comparo,2014,12,Promoter,Promoter,3/5/2015
SENTRA,Comparo,2015,3,Promoter,Promoter,3/5/2015
PATHFINDER,Pathfinder,2014,12,Promoter,Promoter,3/5/2015
这是我的代码:
with open('pathfinder query2.csv','r+') as myfile:
for i in myfile:
i=i.rstrip('\n')
i=i.split(',')
if i[0]=='PATHFINDER' or i[0]=='PATHFINDER_H':
myfile.write(str(i[0])+','+'Pathfinder'+','+str(i[1])+','+str(i[2])+','+str(i[3])+','+str(i[4])+','+str(i[5])+'\n')
else:
myfile.write(str(i[0])+','+'Comparo'+','+str(i[1])+','+str(i[2])+','+str(i[3])+','+str(i[4])+','+str(i[5])+'\n')
我在引用第8行时得到IOError: [Errno 0] Error
。我在其他帖子中看到应该使用myfile.seek()
函数,但我不确定如何应用它。任何帮助将不胜感激。
答案 0 :(得分:1)
在Python中打开文件类似于C中的fopen,有关模式的概述,请参阅here。问题是您使用r+
打开文件(读取+更新),而您需要使用w+
打开文件(写入+更新)。因此,您必须将代码更改为:
with open('pathfinder query2.csv','w+') as myfile:
同样评论(Thx.Jon。),读取和写入同一文件并不明智。我建议您复制文件或将整个文件读取到缓冲区。