我已经在网上搜索并花了整整一周的时间搜索这个。现在极度迷失。
我是编程新手,目前正在寻找一种方法来删除偏移值后的一组字节(这并不意味着删除该偏移后的所有内容)。
现在我只有这个
filep = open('filepath', 'r+')
filep.seek(offset in dec)
#command to delete a set amount of bytes from here
filep.save()
filep.close()
我怎样才能完成这项工作?
正如 Veedrac 已经指出的,最简单的方法是使用修改后的内容创建一个新文件。如果您不再需要原始文件,您可以在之后移动新文件。
以下代码应该可以帮助您创建新文件。
OFFSET = 3
ENDOFFSET = 4
with open( 'file.txt', 'rb' ) as inputfile, open( 'out.txt', 'wb' ) as outfile:
outfile.write(inputfile.read( OFFSET - 1 ))
inputfile.seek(ENDOFFSET)
outfile.write(inputfile.read())
如果处理文件,with 语句很方便。
这是从文件中删除字节的另一种方法。
def zapper(filepath, offset, length):
with open(filepath, 'rb+') as filep:
filep.seek(offset + length)
data = filep.read()
filep.seek(offset)
filep.write(data)
filep.truncate()
你不能。您需要重写文件。您只能在以下情况下对文件进行变异:
所以你必须一直覆盖到最后并截断。我建议只覆盖文件,特别是如果您编写一个新文件然后以原子方式移动它。