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。
如果您有更多问题,请随时直接给我发电子邮件。
我想通过以下方式将 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。
如果您有更多问题,请随时直接给我发电子邮件。