使用Python 3.10获取Mega.nz文件夹文件遇阻,求可行代码
问题:无法通过mega.py获取MEGAsync文件夹内的文件
尝试使用mega.py模块获取Mega.nz中MEGAsync文件夹内的文件已近一周,试过邮箱密码登录、文件夹公开链接,也参考了包括Stack Overflow在内的各类旧示例,但均报错(方法不存在、字典元素不存在等),推测这些示例基于旧版本模块。
使用的代码:
from mega import Mega mega = Mega() m = mega.login('example@example.com', 'example123') # Get 'MEGAsync' folder folder_name = 'MEGAsync' folder = m.find(folder_name) # Get the file list inside the folder files = m.get_files_in_node(folder[0]) # Print file names on the list for f in files: print(f['name'])
错误信息:
print(f['name'])
TypeError: string indices must be integers
实际获取到的files字典中不包含MEGAsync文件夹内的文件名,求可行代码示例。
可行代码示例
针对新版本mega.py,以下代码可以正确获取MEGAsync文件夹内的文件:
from mega import Mega # 初始化并登录账号 mega = Mega() m = mega.login('your_email@example.com', 'your_password') # 查找MEGAsync文件夹(返回匹配的节点列表) folder_name = 'MEGAsync' target_folders = m.find(folder_name, exclude_deleted=True) if not target_folders: print(f"未找到名为{folder_name}的文件夹") else: # 取第一个匹配的文件夹(存在多个同名文件夹时可按需调整) target_folder = target_folders[0] # 获取文件夹内所有节点(返回字典,key为节点ID,value为节点详细信息) folder_contents = m.get_files_in_node(target_folder) # 遍历并打印文件夹内的文件名(过滤掉子文件夹) for node_id, node_detail in folder_contents.items(): # type=1代表文件,type=0代表文件夹 if node_detail['type'] == 1: print(node_detail['name'])
关键说明
m.find()返回的是匹配名称的节点列表,需先判断是否找到目标文件夹m.get_files_in_node()返回的是键值对字典,直接遍历字典会拿到字符串类型的节点ID(这是你之前报错的核心原因),需通过items()遍历节点ID和对应信息- 可通过
node_detail['type']区分文件和文件夹,按需过滤内容
内容的提问来源于stack exchange,提问作者Darío Albarenque
相关产品推荐
相关产品推荐

