求解:取舍3后文件中的内容为什么不是替换而是不断的增加一个bll内容
求解:选择3后文件中的内容为什么不是替换而是不断的增加一个bll内容?
下面代码执行时,选择3后文件中的内容为什么不是替换而是不断的增加一个bll内容?
import os
ls= os.linesep
fname ='E:/2.txt'
rwflag = input("1:Write\n2:Read\n3:Edit\n")
try:
fobj= open(fname,"r+")
except IOError,e:
print "*** file open error",e
else:
#write lines
if rwflag==1:
all =[]
print "\nEnter lines('.'by self to quit).\n"
while True:
entry = raw_input("Input contents")
if entry ==".":
break
else:
all.append(entry)
fobj.truncate()
fobj.writelines(['%s%s'%(x,ls)for x in all])
fobj.close()
print 'DONE'
#write lines
elif rwflag==2:
print rwflag
for eachline in fobj:
print eachline.strip()
fobj.close()
#edit lines
elif rwflag==3:
bll = fobj.readlines()
print bll[0]
bll[0]='333\r\n'
print bll
fobj.truncate()
for eachline in fobj:
print eachline.strip()
fobj.writelines(x for x in bll)
fobj.close()
------解决思路----------------------
加一句
------解决思路----------------------
truncate(0)把从位置0开始的都删掉了, 但当前位置没有重置为0, 所以你得到的内容会类似于'\x00\x00\x00\x00hi'. 要重置当前位置用seek, #1楼已建议过了.
下面代码执行时,选择3后文件中的内容为什么不是替换而是不断的增加一个bll内容?
import os
ls= os.linesep
fname ='E:/2.txt'
rwflag = input("1:Write\n2:Read\n3:Edit\n")
try:
fobj= open(fname,"r+")
except IOError,e:
print "*** file open error",e
else:
#write lines
if rwflag==1:
all =[]
print "\nEnter lines('.'by self to quit).\n"
while True:
entry = raw_input("Input contents")
if entry ==".":
break
else:
all.append(entry)
fobj.truncate()
fobj.writelines(['%s%s'%(x,ls)for x in all])
fobj.close()
print 'DONE'
#write lines
elif rwflag==2:
print rwflag
for eachline in fobj:
print eachline.strip()
fobj.close()
#edit lines
elif rwflag==3:
bll = fobj.readlines()
print bll[0]
bll[0]='333\r\n'
print bll
fobj.truncate()
for eachline in fobj:
print eachline.strip()
fobj.writelines(x for x in bll)
fobj.close()
------解决思路----------------------
加一句
fobj.seek(0)在
fobj.truncate()前面
------解决思路----------------------
truncate(0)把从位置0开始的都删掉了, 但当前位置没有重置为0, 所以你得到的内容会类似于'\x00\x00\x00\x00hi'. 要重置当前位置用seek, #1楼已建议过了.