程序:
- 挂载 samba 驱动器(sudo mount.cifs ......)
- 启动jupyter笔记本
- 运行一个脚本,打开一堆 matlab 文件,然后对它们进行一些繁重的工作
- 让代码运行,一周后回来
90% 的时间一切正常没有问题。但有时代码会因 IOError 而中途停止
OSError Traceback (most recent call last)
/opt/anaconda/envs/py36qt5/lib/python3.6/site-packages/scipy/io/matlab/mio.py in _open_file(file_like, appendmat)
30 try:
---> 31 return open(file_like, 'rb'), True
32 except IOError:
OSError: [Errno 5] Input/output error:
当然,我已经检查了它无法打开的文件确实存在,并且只需重新运行脚本就可以顺利完成(或者,以很小的概率,在另一个文件上崩溃,该文件也存在)
我知道连接到我们研究所 LAN 的远程 samba 驱动器可能会遇到短暂的响应延迟。也许这就是原因。
我的问题是:
- 如何诊断问题的根源
- 如果确实是我的文件暂时无法访问的情况,您能否建议围绕文件加载命令使用一个包装脚本(scipy.io.loadmat(文件名))会重试加载文件而不是崩溃?
答案1
如果 OSError 一直返回到您的代码,请捕获它并重试。如果不存在,请在调用 matlab 之前检查该文件是否存在。如果 matlab 运行了几个小时却没有回复您,请考虑使用重试循环修补该文件。源码就在那里,如果你有足够的权限,你可以编辑它。