我正在加载一个文件:

a= np.load('myfile.npz')

然后用a
过了一会儿,我重新生成myfile.npz(在远程计算机上)。
当我尝试从远程计算机跨(使用WinSCP)复制文件时失败,报告:
System Error.  Code: 32.
The process cannot access the file because it is being used by another process.

我试过这个:
>>> a.fid
<open file 'myfile.npz', mode 'rb' at 0x058A78B8>
>>> a.fid.close()
>>> a.fid
<closed file 'myfile.npz', mode 'rb' at 0x058A78B8>

但是,文件复制仍然失败。
如果关闭python解释器,则复制成功。
是什么导致了这个问题?我需要先关闭myfile.npz(我以为这是自动处理的)吗?如果是,我该怎么做?
我正在使用一个python控制台,在Win7上的Spyder IDE中。

最佳答案

尝试使用with context manager

with np.load('myfile.npz') as a:
    do_stuff(a)

do_morestuff() # a is closed now

上下文管理器会在完成资源后自动关闭它。

10-08 03:54