You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mega.py从MEGA云盘下载文件遇到PermissionError的问题咨询

mega.py 下载时触发WinError 32权限错误的解决方法

问题背景

在Windows环境下使用mega.py模块登录个人MEGA账号下载文件时,按照官方示例编写的代码运行后,会在下载流程的最后一步抛出文件被占用的权限错误,临时缓存文件无法完成移动落地。

对应运行的示例代码如下:

from mega import Mega


mega = Mega()
email = "example@example.com"
password = "xxxxxxxxxx"
m = mega.login(email, password)

filename = "filename.jpg"

file = m.find(filename)
m.download(file)

对应的核心报错堆栈:

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\AppData\\Local\\Temp\\megapy_d6ozyjm' -> 'filename.jpg'

报错本质

该异常是Windows平台特有的文件占用逻辑导致:

  • mega.py默认会先把下载内容写入系统临时目录的缓存文件,等下载完成后再通过shutil.move把临时文件移动到当前脚本运行目录
  • 临时文件的句柄没有被及时释放,加上跨目录移动时Windows需要先删除源临时文件,一旦临时文件被其他进程(杀毒软件、系统索引服务)提前锁定,就会触发WinError 32异常。

具体解决方式

  • 调整临时文件路径,把临时缓存目录设置为和脚本同一运行目录
    这种方式可以让临时文件和目标落地文件在同一磁盘分区、同一目录下,不需要跨目录删除临时源文件,直接完成文件重命名落地:
    import os
    import tempfile
    from mega import Mega
    
    # 把临时文件目录指定为当前脚本的运行目录
    tempfile.tempdir = os.getcwd()
    
    mega = Mega()
    m = mega.login("example@example.com", "xxxxxxxxxx")
    file = m.find("filename.jpg")
    # 执行下载,此时临时文件和目标文件同目录,无跨目录移动操作
    m.download(file)
    
  • 显式指定下载输出的目标路径
    在调用download方法时传入dest_path参数,跳过默认的临时文件中转逻辑:
    # 直接指定文件保存的绝对路径
    save_target = os.path.abspath(os.path.join(os.getcwd(), "filename.jpg"))
    m.download(file, dest_path=save_target)
    
  • 排除外部进程的文件占用干扰
    临时关闭系统杀毒软件、Windows搜索索引服务对临时目录和脚本运行目录的实时扫描,避免其他进程在临时文件生成瞬间锁定句柄。
  • 切换到mega.py的稳定版本
    部分高版本mega.py存在Windows下文件句柄释放滞后的已知bug,可以安装经过验证的稳定版本规避问题,对应安装命令:
    pip install mega.py==0.9.0

内容的提问来源于stack exchange,提问作者oneclick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 18:15:03