我已经在网上搜索过,花了整整一周的时间搜索这个。现在非常失落。
我是编程新手,目前正在寻找一种方法来在偏移值之后删除一定数量的字节(这并不意味着在偏移之后删除所有内容)。
现在我只有这个
filep = open('filepath', 'r+')
filep.seek(offset in dec)
#command to delete a set amount of bytes from here
filep.save()
filep.close()
我怎样才能完成这项工作?
答案 0 :(得分:4)
正如Veedrac已经指出的那样,最简单的方法是使用修改后的内容创建一个新文件。 如果您不再需要原始文件,则可以move之后的新文件。
以下代码可以帮助您创建新文件。
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-statement会很方便。
答案 1 :(得分:0)
你做不到。您需要重写该文件。只有在以下情况下才能改变文件:
所以你必须一直覆盖到最后并截断。我建议只覆盖文件,特别是如果你写一个新文件,然后原子地移动它。
答案 2 :(得分:0)
这是从文件内部删除字节的另一种方法。
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()