0

我已经在网上搜索并花了整整一周的时间搜索这个。现在极度迷失。

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

现在我只有这个

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

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

4

3 回答 3

4

正如 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 语句很方便

于 2013-09-24T12:13:02.163 回答
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()
于 2013-09-26T03:34:58.257 回答
0

你不能。您需要重写文件。您只能在以下情况下对文件进行变异:

  • 你不会改变它们的长度
  • 你从头改变

所以你必须一直覆盖到最后并截断。我建议只覆盖文件,特别是如果您编写一个新文件然后以原子方式移动它。

于 2013-09-24T11:35:18.267 回答