安装 samba 驱动器时出现 Python 罕见 IOError

安装 samba 驱动器时出现 Python 罕见 IOError

程序:

  1. 挂载 samba 驱动器(sudo mount.cifs ......)
  2. 启动jupyter笔记本
  3. 运行一个脚本,打开一堆 matlab 文件,然后对它们进行一些繁重的工作
  4. 让代码运行,一周后回来

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 驱动器可能会遇到短暂的响应延迟。也许这就是原因。

我的问题是:

  1. 如何诊断问题的根源
  2. 如果确实是我的文件暂时无法访问的情况,您能否建议围绕文件加载命令使用一个包装脚本(scipy.io.loadmat(文件名))会重试加载文件而不是崩溃?

答案1

如果 OSError 一直返回到您的代码,请捕获它并重试。如果不存在,请在调用 matlab 之前检查该文件是否存在。如果 matlab 运行了几个小时却没有回复您,请考虑使用重试循环修补该文件。源码就在那里,如果你有足够的权限,你可以编辑它。

相关内容