FAQ

windows 上 NamedTemporaryFile 读取失败 PermissionError

参考:

解决方法:

  1. 设置 NamedTemporaryFile(delete=False)
  2. NamedTemporaryFile 返回的是直接打开的文件,因此删除时需要确保已经关闭

    • f.close()
    • os.unlink(f)

举例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# delete=True, 避免PermissionError
with NamedTemporaryFile(suffix='.html', delete=(False if os.name == 'nt' else True)) as f:

    output_file(f.name, title='TPP 相图')

    plt = draw_plot()
    if show_plot:
        show(plt)

    save(plt)
    content = f.read().decode('utf-8')

if os.name == 'nt':
    try:
        # 先关闭
        f.close()
        # 再删除
        os.unlink(f.name)
    except OSError as e:
        logger.error(e)

return content