我试图通过numpy.fromfile
一个 mocked file
,我不断收到以下错误:
IOError: !first 参数必须是打开的文件
这是一个基本示例,使用mock_open
取自模拟包的更多示例部分:
import numpy as np
from mock import MagicMock, patch
file_spec = file
def mock_open(mock=None, data=None):
if mock is None:
mock = MagicMock(spec=file_spec)
handle = MagicMock(spec=file_spec)
handle.write.return_value = None
if data is None:
handle.__enter__.return_value = handle
else:
handle.__enter__.return_value = data
mock.return_value = handle
return mock
if __name__ == "__main__":
m = mock_open()
with patch('__main__.open', m, create=True):
with open('foo', 'rb') as h:
print h.mock_calls
try:
result = np.fromfile(h)
except IOError:
print "io error!"
print h.mock_calls
导致:
% [call.__enter__()]
% io error!
% [call.__enter__()]
我可以嘲笑numpy.fromfile
,这可能就是我最终会做的事情。我无法理解以下内容
- 为什么上面的例子不起作用
- 为什么我在调试时遇到麻烦
fromfile
(通过pdb.set_trace()
在之前调用fromfile
并进入fromfile
. 调试器似乎无论如何都会跳过调用。 fromfile
为什么我在numpy
源代码中找不到。这样的函数存在于numpy/numarray/functions.py
,numpy/core/records.py
和中numpy/ma/core.py
,但这些函数都不会像上面列出的那样引发错误。
非常感谢澄清上述问题的任何帮助。顺便说一句,我使用numpy
的是 1.6.1 版本。