Python 模块 dbf 的内存错误

MemoryError of Python Module dbf

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

import dbf
table = dbf.from_csv('/home/beata/Documents/NC/CNRM_control/CNRM_pr_power1961','CNRM_pr_power1961.dbf')

但我收到以下错误:

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。我的 ubuntu 14.04 LTS OS 类型是 64 位,31.3 GiB 内存和 Intel Xeon(R) CPU ES-1660vz@ 3.70GHz x12

有人可以写信告诉我应该如何解决这个错误吗?

提前感谢您的帮助!

你遇到的问题是 dbf.from_csv 试图在内存中创建一个 table,而你的 O/S 没有足够的 RAM 来这样做。

为了解决这个问题,我重新编写了 from_csv 以在您通过 on_disk=True 时直接写入磁盘。查看 PyPI 获取最新代码。

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

如果您有更多问题,请随时直接给我发电子邮件。