我们在测试期间使用 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 的版本在清理之前没有关闭文件?不知道这里发生了什么,这解决了我的问题。
添加回答
举报
0/150
提交
取消