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
相关产品推荐
相关产品推荐

