是否有可以使用scipy.io.readsav读取的最大文件大小限制?

时间:2017-10-28 08:10:27

标签: python scipy

总结:我有一个带有905 x 905 x 762元素的3D FLOAT数组。它存储在IDL保存文件中,无法使用scipy.io.readsav读取。当我将此数组的一部分(905 x 905 x 600元素或更少)存储在另一个IDL保存文件中时,这次scipy.io.readsav工作正常。

这就是我要读取这两个文件中的任何一个:

from scipy.io import readsav
filename = 'datacube.sav'
sav = readsav(filename, verbose=True)

这是我在阅读较大的IDL保存文件时得到的错误:

/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/scipy/io/idl.py:473: UserWarning: Using experimental 64-bit array read
warnings.warn("Using experimental 64-bit array read")
Traceback (most recent call last):

File "<ipython-input-1-c6753cefbd81>", line 1, in <module> runfile('/Users/moncho/Data/untitled7.py', wdir='/Users/moncho/Data')
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/Users/moncho/Data/untitled7.py", line 11, in <module>
sav = readsav(filename, verbose=True)
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/scipy/io/idl.py", line 799, in readsav
r = _read_record(f)
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/scipy/io/idl.py", line 360, in _read_record
rectypedesc['array_desc'])
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/scipy/io/idl.py", line 284, in _read_array
array = np.fromstring(f.read(array_desc['nbytes']),

OSError: [Errno 22] Invalid argument

我在Mac OS X 10.11.6上运行python 3.5。任何想法都表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

加载文件取决于系统中可用的可用内存量。验证您是否有足够的可用内存。之前经历过类似的情况 - 我能够在2.7 OS X中使用scipy加载大文件,但不能在3.5中加载。在2.7中尝试 readsav 。这是一个错误。