读/写文件时Errno 0

时间:2015-03-09 02:25:52

标签: python

这是我正在阅读/写入的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()函数,但我不确定如何应用它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在Python中打开文件类似于C中的fopen,有关模式的概述,请参阅here。问题是您使用r+打开文件(读取+更新),而您需要使用w+打开文件(写入+更新)。因此,您必须将代码更改为:

with open('pathfinder query2.csv','w+') as myfile:

同样评论(Thx.Jon。),读取和写入同一文件并不明智。我建议您复制文件或将整个文件读取到缓冲区。