为了账号安全,请及时绑定邮箱和手机立即绑定

Windows PermissionError 和临时文件模块

Windows PermissionError 和临时文件模块

万千封印 2021-09-14 15:25:59
我们在测试期间使用 tempfile 模块生成临时文件和目录。我们最近也开始在 Windows 上进行测试,但遇到了一堆 Windows PermissionErrors。我最初认为这可能是因为 Windows 不像 Unix 不允许同时访问一个文件。当我查看代码时,即使没有同时访问文件,也会发生这种情况。一个常见的线程似乎是当我们在上下文中使用 tempfile 模块的结构(with 语句)时发生的错误。当我们使用手动 try-except-finally 时,错误就会消失。我正在研究解决这个问题的方法,前面提到的 try-except-finally 也在讨论中。有没有其他人遇到过这个或有任何见解?这是我们的测试功能(nosetests 但我不认为这是问题所在)from nibabel.tmpdirs import InTemporaryDirectorydef test_high_level_glm_with_data():    with InTemporaryDirectory():        shapes, rk = ((7, 8, 7, 15), (7, 8, 7, 16)), 3        mask, fmri_data, design_matrices = write_fake_fmri_data(shapes, rk)        multi_session_model = FirstLevelModel(mask=mask).fit(            fmri_data, design_matrices=design_matrices)        z_image = multi_session_model.compute_contrast(            np.eye(rk)[:2], output_type='z_score')        variance_image = multi_session_model.compute_contrast(            np.eye(rk)[:2], output_type='effect_variance')        assert_array_equal(z_image.get_data() == 0., load(mask).get_data() == 0.)  # no error        assert_true(            (variance_image.get_data()[load(mask).get_data() > 0] > .001).all())  # error如果我不使用with InTemporaryDir():测试工作。
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

替换nibabel.tmpdirs.InTemporaryDirectory为 Pythontempfile.TemporaryDirectory解决了这个问题。

也许 Nibabel 的版本在清理之前没有关闭文件?不知道这里发生了什么,这解决了我的问题。


查看完整回答
反对 回复 2021-09-14
  • 1 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号