先安装upyun python sdk
pip install upyun
然后运行下面的代码,可以把所有的文件(包括文件夹里的内容)递归地下载到本地。
代码中需要修改参数有4个。都标记出来了。
操作员是在网站上设置的,至少要给读取权限,密码只生成一次,无法二次查看。
import upyun
import os
up = upyun.UpYun('存储桶的名字', '操作员名字', '操作员密码', timeout=30, endpoint=upyun.ED_AUTO)
# 本地保存路径
local_directory = "./本地保存路径"
# 创建本地保存目录(如果不存在)
if not os.path.exists(local_directory):
os.makedirs(local_directory)
# 递归下载函数
def download_directory(remote_dir, local_dir):
"""
递归下载目录及文件
:param remote_dir: 远程目录路径
:param local_dir: 本地保存目录路径
"""
if not os.path.exists(local_dir):
os.makedirs(local_dir)
try:
# 获取当前目录文件列表
file_list = up.getlist(remote_dir)
for item in file_list:
remote_path = f"{remote_dir}/{item['name']}".replace("//", "/")
local_path = os.path.join(local_dir, item['name'])
if item['type'] == 'N': # 文件类型
with open(local_path, 'wb') as local_file:
up.get(remote_path, local_file)
print(f"已下载文件: {remote_path} 到 {local_path}")
elif item['type'] == 'F': # 子目录
print(f"进入子目录: {remote_path}")
download_directory(remote_path, local_path)
except Exception as e:
print(f"处理目录 {remote_dir} 时出错: {e}")
# 下载根目录及其所有子目录内容
root_remote_dir = "/"
download_directory(root_remote_dir, local_directory)