在特定偏移量后删除一定量的字节

时间:2013-09-24 11:21:49

标签: python offset

我已经在网上搜索过,花了整整一周的时间搜索这个。现在非常失落。

我是编程新手,目前正在寻找一种方法来在偏移值之后删除一定数量的字节(这并不意味着在偏移之后删除所有内容)。

现在我只有这个

filep = open('filepath', 'r+')
filep.seek(offset in dec)
#command to delete a set amount of bytes from here
filep.save()
filep.close()

我怎样才能完成这项工作?

3 个答案:

答案 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()