我在python中看过多个教程,对python file write()、tell()、seek()函数以及操作系统写入(),lseek()函数。在
但我还是不知道该怎么做: 我所拥有的: 在一个文件中,我知道起始偏移量和结束偏移量字节。我需要用一组不同的字节来替换从start_offset到end_offset的字节。我该怎么做??在
ftell()返回起始偏移量,类似地regex+ftell()返回结束偏移量 我有将覆盖文件中原始字节的字节。在
但是write()只需要一个字符串来写。另外,如何从起始位置覆盖到结束位置??在
感谢您的任何建议
在
.seek()
-返回到start_offset
位置之后,将精确的字符数==字节写入。然后覆盖之前的数据。在您可以将其拆分为多个写入,如果需要,甚至可以一次写入一个字符(字节)。在
尽管你大声否认,你可以在这里使用
mmap
。在如果您看一下^{} constructor in the docs ,它接受}的参数。在大多数平台上,两者都必须是
offset
和{PAGESIZE
的倍数或类似值,但这并不难。在所以:
这样做的好处是,如果
len(newbytes) != end - start
你会从mmap
得到一个很好的异常,而不是像你所想的那样或多或少地覆盖文件,使文件损坏。在但是使用
^{pr2}$seek
可能更简单,就像Martijn Pieters的回答一样。以下是与seek
相同的函数:不过,值得知道
mmap
可以做什么,这样您就不会在将来的有用案例中忽略它。在(另外,对于某些版本的Python,在某些平台上,可能会有太大而无法
seek
的文件。例如,linux/proc/*/map
是一个大小为1<<64
的稀疏文件,但是在某些发行版上,Python找不到fseeko
,因此不能搜索到比1<<63
更远的地方。因此,了解其他方法来做这件事-os.lseek
,mmap
等等-也许有一天能帮助你解决一个问题。)相关问题 更多 >
编程相关推荐