用python转移小文件到指定目录并压缩,脚本封装

简介: 这篇文章介绍了如何使用Python脚本将大量小文件转移到指定目录,并在达到大约250MB时进行压缩。

需求

有一个大文件夹,里面有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()
相关文章
|
8天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
6天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
16天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
48 2
|
18天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
33 3
|
23天前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
25 3
|
23天前
|
数据采集 JSON 数据安全/隐私保护
Python常用脚本集锦
Python常用脚本集锦
19 2
|
24天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
JavaScript 前端开发 网络架构
python中封装与解构
python中封装与解构
148 0
|
9天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!