搜索功能无法更新特定位置的文件 - python
seek function doesn't work to update a file in a specific position - python
我实际上正在做一个使用 UDP 发送文件的项目,由于这个协议不可靠,我在每个数据包上添加了一些信息,这是数据的索引。所以我可以按照正确的顺序写入接收到的数据。
我在文件中的特定位置写入字节时遇到问题
这是我处理写入新数据的代码部分:
while i < packet_num:
buf,address = recieve_packet(s,data_size+10)
i += 1
if buf:
print(buf)
index = int(buf[0:10].decode())
data = buf[10:]
f.seek(seek_pointer + index*data_size,0)
f.write(data)
list_index.append(index)
在这种情况下,搜索功能无效,数据只是附加到文件中。我正在使用 "a+b" 模式打开文件。
Note that if the file is opened for appending using either 'a' or 'a+', any seek() operations will be undone at the next write.
"a" 模式 write
操作追加到文件末尾。 seek
的作用是将 write/read 指针设置为文件中的特定位置。
因此,当调用 write
时,它将写入文件末尾,而不管 read/write 指针。
但是,因为您已经在 a+b
中打开了文件,您将能够搜索到特定位置并 read
它。
如果您使用 'append' 模式打开,所有写入都会到达文件末尾。如果 ypu 已经在跟踪接收数据的位置,那么您需要做的就是以 w+b
模式打开。
wb
创建(或清空)文件,并允许写入(以二进制形式,而不是文本模式)。 w+b
作用相同,但也允许阅读。如果你想打开一个现有文件而不截断它,模式 r+b
将允许读取和写入,同时保留现有数据(同样, b
是二进制模式,我希望它是正确的你的用途)。
我实际上正在做一个使用 UDP 发送文件的项目,由于这个协议不可靠,我在每个数据包上添加了一些信息,这是数据的索引。所以我可以按照正确的顺序写入接收到的数据。 我在文件中的特定位置写入字节时遇到问题
这是我处理写入新数据的代码部分:
while i < packet_num:
buf,address = recieve_packet(s,data_size+10)
i += 1
if buf:
print(buf)
index = int(buf[0:10].decode())
data = buf[10:]
f.seek(seek_pointer + index*data_size,0)
f.write(data)
list_index.append(index)
在这种情况下,搜索功能无效,数据只是附加到文件中。我正在使用 "a+b" 模式打开文件。
Note that if the file is opened for appending using either 'a' or 'a+', any seek() operations will be undone at the next write.
"a" 模式 write
操作追加到文件末尾。 seek
的作用是将 write/read 指针设置为文件中的特定位置。
因此,当调用 write
时,它将写入文件末尾,而不管 read/write 指针。
但是,因为您已经在 a+b
中打开了文件,您将能够搜索到特定位置并 read
它。
如果您使用 'append' 模式打开,所有写入都会到达文件末尾。如果 ypu 已经在跟踪接收数据的位置,那么您需要做的就是以 w+b
模式打开。
wb
创建(或清空)文件,并允许写入(以二进制形式,而不是文本模式)。 w+b
作用相同,但也允许阅读。如果你想打开一个现有文件而不截断它,模式 r+b
将允许读取和写入,同时保留现有数据(同样, b
是二进制模式,我希望它是正确的你的用途)。