如题,我用python操作文件,从文件中固定的某一行开始插入多行数据时候,总是倒着插入啊,例如我想插入:
1 2 3
4 5 6
7 8 9
我想插入上面三行数据的时候,用下面的代码后结果插入成了下面的形式:
7 8 9
4 5 6
1 2 3
求助啊!在线等!另外问一下各位高手,如何删除文件中固定某一行的特定字符啊,例如我想删除"1 2 3 "这样行中的3.
谢谢各位了!
我的代码如下,请大家帮我看看!
- Python code
# -*- coding: cp936 -*- dat0=' ' dat_n='\n' year='1987' dat1='744' dat2='36' dat3='xxx' k=16 i=16 j=1 f = open('D:/Fortran/run_data_mode', 'r') data = f.readlines() f.close() #data[4] = data[4].replace('year', '1987') data[k:1] = [dat0,dat1,dat0,dat2,dat_n] ###################下面部分为我要做的,即从第i=15行开始插入多行数据,但是为啥是倒着插入的? ###################不能按照我的本意插入啊!######################################### while(1): data[i:1]=[dat0,str((j+0)*int(dat2)),dat0,str((j+1)*int(dat2)),dat0,str((j+2)*int(dat2)), dat0,str((j+3)*int(dat2)),dat0,str((j+4)*int(dat2)),dat0,str((j+5)*int(dat2)), dat0,str((j+6)*int(dat2)),dat0,str((j+7)*int(dat2)),dat0,str((j+8)*int(dat2)), dat0,str((j+9)*int(dat2)),dat_n] i=i+1#########关键这个地方出问题了好像。 j=j+10 if int(dat1)*int(dat2)<j*int(dat2): break ###################上面部分为我要做的,即从第i=15行开始插入多行数据,但是为啥是倒着插入的? f = open('D:/Fortran/run_data_mode', 'w') f.writelines(data) f.close()
------解决方案--------------------
既然是字符串,先构造,再写入
例如
- Python code
data = '123' data += '\n456' data += '\n789' f = open('data.txt','w') f.write(data) f.close()