我想通过以下方式在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。我的ubuntu14.04ltsOS类型是64位,具有31.3 GiB内存和Intel (R) CPU ES-1660 My @ 3.70GHz x12
有人能给我写些什么来纠正这个错误吗?
谢谢你提前提供帮助!
发布于 2015-08-14 19:23:08
存在的问题是,dbf.from_csv试图创建内存中的表,而您的O/S没有让您拥有足够的内存。
为了解决这个问题,我重写了from_csv,如果您通过on_disk=True,它将直接写入磁盘。查看PyPI以获得最新代码。
剩下的问题是dbf格式本身--您可能会遇到这样大的文件问题,因为内部结构不是为这么大的容量设计的。如果更新没有完全解决问题,则需要拆分csv文件并从其中创建多个dbfs。
如果你有更多的问题,可以直接给我发电子邮件。
https://stackoverflow.com/questions/31926922
复制相似问题