如上代码,这是一个查找文件内容,替换指定内容的函数。文件长度363680。每次读取固定的长度。前面都很正常,但是读到4759的位置后再读取,这一次就会出错,指定读取32个字节,但是实际只能读到31个。
程序就认为到了文件末尾,退出了读取。
为什么呢???@ufbycd @icecut @dirtwillfly @xyz549040622 @m564522634
- def replace_words(src_name, dest_name,src_words, dest_words):
- file_size = os.path.getsize("./" + src_name)
- print("file_size: %d" % file_size)
- src_offset = 0
- dest_offset = 0
- src = open(src_name,'r')
- # src = open(src_name,'r+')
- dest = open(dest_name,'w+')
- print("Src words: %s" % src_words)
- print("Dest words: %s" % dest_words)
- if len(src_words) != len(dest_words):
- print("Words is't same!")
- os._exit()
- while True:
- src.seek(src_offset, 0)#指针指向文件特定位置
- dest.seek(dest_offset, 0)#指针指向文件特定位置
- readed = src.read(len(src_words))#从当前位置读取指定长度
- if len(readed) != len(src_words):#如果读到的长度不等于指定长度,说明已经到文件末尾
- dest.write(readed)#将读取到的复制到目标文件
- break
- else:
- if cmp(readed, src_words) == 0:#读取到的内容与需要替换的内容相同
- print("Replace %s" % dest_words)
- readed = dest_words#替换掉读取到的内容
- src_offset += len(src_words) - 1
- dest_offset += len(dest_words) - 1
- dest.write(readed)#将读取到的复制到目标文件
- src_offset += 1
- dest_offset += 1
- print("Src file size: %d" % src_offset)
- print("Dest file size: %d" % dest_offset)
- src.close()
- dest.close()
|