ato*_*3ls 2 python file-io numpy winscp spyder
我正在加载一个文件:
a= np.load('myfile.npz')
Run Code Online (Sandbox Code Playgroud)
然后做事 a
过了一会儿,我重新生成myfile.npz(在远程机器上).
当我尝试从远程计算机复制文件(使用WinSCP)时,它失败,报告:
System Error. Code: 32.
The process cannot access the file because it is being used by another process.
Run Code Online (Sandbox Code Playgroud)
我试过这个:
>>> a.fid
<open file 'myfile.npz', mode 'rb' at 0x058A78B8>
>>> a.fid.close()
>>> a.fid
<closed file 'myfile.npz', mode 'rb' at 0x058A78B8>
Run Code Online (Sandbox Code Playgroud)
但是,文件复制仍然失败.
如果我关闭python解释器,副本成功.
造成这个问题的原因是什么?我需要先关闭myfile.npz(我以为这是自动处理的)吗?如果是这样,我该怎么办?
我在Win7上的Spyder IDE中使用了一个python控制台.
尝试使用with上下文管理器:
with np.load('myfile.npz') as a:
do_stuff(a)
do_morestuff() # a is closed now
Run Code Online (Sandbox Code Playgroud)
完成后,上下文管理器会自动关闭资源.
| 归档时间: |
|
| 查看次数: |
2806 次 |
| 最近记录: |