以上代码报错 'mmap.mmap' object has no attribute 'seekable'
时间: 2023-09-09 12:14:00 浏览: 196
这是因为 mmap 对象没有 seekable 属性。
可以考虑使用另外一种方式来实现对文件的内存映射,例如使用 memory-mapped 文件来代替 mmap 对象。具体的实现可以参考以下示例代码:
```
import mmap
import os
# 打开文件并创建 memory-mapped 文件
with open('file.txt', 'rb') as f:
size = os.fstat(f.fileno()).st_size
mm = mmap.mmap(f.fileno(), size, access=mmap.ACCESS_READ)
# 使用 memory-mapped 文件进行读写操作
print(mm[:10])
mm.seek(0)
mm.write(b'Hello World')
# 关闭 memory-mapped 文件并释放资源
mm.close()
```
相关问题
以上代码会报错'mmap.mmap' object has no attribute 'seekable',请修改
将代码中的`f`改为`fileobj`,并在调用`seek()`和`truncate()`方法前先判断对象是否支持该方法:
```python
import mmap
with open("test.txt", "r+b") as f:
# 将文件内容映射到内存中
fileobj = mmap.mmap(f.fileno(), 0)
# 读取文件内容
print(fileobj.read())
# 判断对象是否支持 seek() 方法
if fileobj.seekable():
# 移动指针到文件开头
fileobj.seek(0)
# 判断对象是否支持 truncate() 方法
if fileobj.truncate():
# 截断文件
fileobj.write(b"new content")
# 关闭内存映射
fileobj.close()
```
formMap.get(fieldId).setFieldName(labelCountMap.keySet()); formMap.get(fieldId).setData(labelCountMap.values()); formMap.get(fieldId).setMap(labelCountMap); } } List<FormReportVO.Analysis> result = new ArrayList(formMap.values()); return result; } }
这段代码是将处理后的表单字段数据封装成表单分析报告的逻辑。对于每个表单字段,通过 `formMap.get(fieldId)` 获取其对应的 `FormReportVO.Analysis` 对象,然后将该对象的字段名称、数据和 Map 分别设置为处理后的数据。最后,将所有的 `FormReportVO.Analysis` 对象放入一个名为 result 的 List 中,并返回该 List。
阅读全文