赞
踩
有一个大文件夹,里面有10万个小文件,有10G。需要转成小压缩包,每个压缩包250M左右。
1、判断指定文件夹的大小;
2、转移文件,指定文件夹到250M时停止转移;
3、将指定文件夹进行压缩。
import os import shutil import time ORIGINAL_PATH = f"/Users/Desktop/amyfiles/temp/" SAVE_PATH = f'/Users/Desktop/amyfiles/temp/my_data/' def get_folder_size(folder_path): """获取文件夹的大小""" total_size = 0 for path, dirs, files in os.walk(folder_path): for f in files: fp = os.path.join(path, f) total_size += os.path.getsize(fp) size_m = int(total_size / (1024 * 1024)) return size_m def start(): # for i in range(1, 100): # final_path = f'{SAVE_PATH}/20231107_{i}' final_path = f'{SAVE_PATH}/20231107_1' if not os.path.exists(final_path): os.makedirs(final_path) for path, dirs, files in os.walk(ORIGINAL_PATH): for num, f in enumerate(files): # 判断文件夹大小 folder_size = get_folder_size(folder_path=final_path) # 文件夹中的总文件大于250M停止移动 if folder_size and folder_size > 250: break # 转移文件 shutil.move(f'{ORIGINAL_PATH}/{f}', f'{final_path}/{f}') time.sleep(0.01) print(f'{num}, 已转移: {f}, 当前 {final_path} 大小: {folder_size}M') # base_name:压缩打包后的文件名或者路径名 # format: 压缩或者打包格式 "zip", "tar", "bztar", "gztar" # root_dir : 将哪个目录或者文件打包(也就是源文件) shutil.make_archive(base_name=final_path, format='zip', root_dir=final_path) if __name__ == '__main__': start()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。