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

Ubuntu环境下Python 2.7版Mega API Wrapper指定文件夹上传方法问询

如何使用Python 2.7的Mega API Wrapper将文件上传到Mega账号的指定文件夹?

我在Ubuntu系统中使用Python 2.7版本的Mega API Wrapper,目前用下面的代码可以批量上传文件到我的Mega账号,但不知道怎么把文件上传到账号下的指定文件夹里,现有代码如下:

from mega import Mega
import os
from os import listdir
from os.path import isfile, join

mega = Mega()
mega._login_user('email','password')

def absoluteFilePaths(directory):
    for dirpath,_,filenames in os.walk(directory):
        for f in filenames:
            yield os.path.abspath(os.path.join(dirpath, f))

解决方案:指定目标文件夹ID上传

要实现上传到指定文件夹,核心是先获取目标文件夹的唯一ID,然后在上传时把这个ID作为参数传入。具体步骤如下:

1. 获取目标文件夹的ID

首先需要遍历账号内的文件结构,找到你要上传到的文件夹对应的ID。添加这段代码就能实现:

# 获取账号内所有文件和文件夹的信息
all_items = mega.get_files()

# 替换成你实际要上传到的文件夹名称
target_folder_name = "我的目标文件夹"
target_folder_id = None

# 遍历查找目标文件夹
for item in all_items.values():
    # 't' == 1 表示这是一个文件夹,'n'是文件夹名称,'h'是文件夹ID
    if item['t'] == 1 and item['n'] == target_folder_name:
        target_folder_id = item['h']
        break

# 如果没找到文件夹就终止程序
if not target_folder_id:
    print(f"找不到名为 {target_folder_name} 的文件夹,请检查名称是否正确")
    exit()

2. 修改上传逻辑,指定目标文件夹

在调用mega.upload()方法时,加上dest参数并传入刚才获取的文件夹ID,就能把文件上传到指定位置了。结合你原有的批量上传逻辑,完整的上传代码如下:

# 替换成你要上传的本地文件目录
local_upload_dir = "/path/to/your/local/files"

for file_path in absoluteFilePaths(local_upload_dir):
    try:
        print(f"正在上传文件: {file_path}")
        # 关键:通过dest参数指定目标文件夹ID
        mega.upload(file_path, dest=target_folder_id)
        print(f"{file_path} 上传成功!")
    except Exception as e:
        print(f"上传 {file_path} 失败,错误信息: {str(e)}")

完整整合代码

把上面的步骤整合起来,最终的完整代码如下:

from mega import Mega
import os
from os import listdir
from os.path import isfile, join

mega = Mega()
mega._login_user('your_email@example.com','your_mega_password')

def absoluteFilePaths(directory):
    for dirpath,_,filenames in os.walk(directory):
        for f in filenames:
            yield os.path.abspath(os.path.join(dirpath, f))

# 1. 获取目标文件夹ID
target_folder_name = "我的目标文件夹"
all_items = mega.get_files()
target_folder_id = None
for item in all_items.values():
    if item['t'] == 1 and item['n'] == target_folder_name:
        target_folder_id = item['h']
        break

if not target_folder_id:
    print(f"错误:未找到文件夹 {target_folder_name}")
    exit()

# 2. 批量上传到指定文件夹
local_upload_dir = "/home/your_username/files_to_upload"
for file_path in absoluteFilePaths(local_upload_dir):
    try:
        print(f"开始上传 {file_path}...")
        mega.upload(file_path, dest=target_folder_id)
        print(f"{file_path} 上传完成")
    except Exception as e:
        print(f"上传 {file_path} 失败: {str(e)}")

额外提示

  • 如果目标文件夹还不存在,可以用mega.create_folder("新文件夹名称")方法创建,这个方法会直接返回新文件夹的ID,你可以直接拿来用。
  • 注意Python 2.7已经停止官方维护了,如果条件允许,建议升级到Python 3.x版本,能获得更好的兼容性和安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:30:23