首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块dbf的MemoryError

模块dbf的MemoryError
EN

Stack Overflow用户
提问于 2015-08-10 18:46:30
回答 1查看 250关注 0票数 2

我想通过以下方式在python中将csv转换为dbf:

代码语言:javascript
复制
import dbf
table = dbf.from_csv('/home/beata/Documents/NC/CNRM_control/CNRM_pr_power1961','CNRM_pr_power1961.dbf')

但我得到了以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/pymodules/python2.7/dbf/__init__.py", line 172, in from_csv
    mtable.append(tuple(row))
  File "/usr/lib/pymodules/python2.7/dbf/tables.py", line 1154, in append
    newrecord[index] = item
  File "/usr/lib/pymodules/python2.7/dbf/tables.py", line 278, in __setitem__
    yo.__setattr__(yo._layout.fields[name], value)
  File "/usr/lib/pymodules/python2.7/dbf/tables.py", line 269, in __setattr__
    yo._updateFieldValue(fielddef, value)
  File "/usr/lib/pymodules/python2.7/dbf/tables.py", line 168, in _updateFieldValue
    bytes = array('c', update(value, fielddef, yo._layout.memo))
  File "/usr/lib/pymodules/python2.7/dbf/_io.py", line 132, in updateMemo
    block = memo.put_memo(string)
  File "/usr/lib/pymodules/python2.7/dbf/tables.py", line 424, in put_memo
    yo.memory[thismemo] = data
MemoryError
>>>

csv大小为2.4 GiB。我的ubuntu14.04ltsOS类型是64位,具有31.3 GiB内存和Intel (R) CPU ES-1660 My @ 3.70GHz x12

有人能给我写些什么来纠正这个错误吗?

谢谢你提前提供帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-14 19:23:08

存在的问题是,dbf.from_csv试图创建内存中的表,而您的O/S没有让您拥有足够的内存。

为了解决这个问题,我重写了from_csv,如果您通过on_disk=True,它将直接写入磁盘。查看PyPI以获得最新代码。

剩下的问题是dbf格式本身--您可能会遇到这样大的文件问题,因为内部结构不是为这么大的容量设计的。如果更新没有完全解决问题,则需要拆分csv文件并从其中创建多个dbfs。

如果你有更多的问题,可以直接给我发电子邮件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31926922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档