写到二进制文件的末尾

时间:2014-11-18 06:42:31

标签: python

我是Python新手,试图用zer0s覆盖文件的最后128个字节。我做错了什么?

   try:
      f = open(outputFile, "wb")
      f.seek(128, 2)   # seek relative to end of file
      f.write(b'\0'*128)
      f.close()

   except Exception as e:
      sys.exit('Error writing output file ' + str(e))

运行正常,但我的2mB文件被截断为256字节,全部为zer0。

1 个答案:

答案 0 :(得分:3)

作为documented,以'w'模式打开会截断文件(即删除其现有内容)。尝试在'r+b'模式下打开它。

另外,如here所述(尽管不完全清楚),相对于文件末尾的搜索仍然使用正数表示“向前”而负向表示“向后”(即朝向开头)文件)。您正在寻找文件的末尾。使用seek(-128, 2)