求解:取舍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()
        
------解决思路----------------------
加一句
fobj.seek(0)
fobj.truncate()
前面
------解决思路----------------------
truncate(0)把从位置0开始的都删掉了, 但当前位置没有重置为0, 所以你得到的内容会类似于'\x00\x00\x00\x00hi'. 要重置当前位置用seek, #1楼已建议过了.