用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()
相关文章
|
22天前
|
SQL 安全 算法
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
Python 3.14 引入了七大核心技术特性,大幅提升开发效率与应用安全性。其中包括:t-strings(PEP 750)提供更安全灵活的字符串处理;类型注解惰性求值(PEP 649)优化启动性能;外部调试器API标准化(PEP 768)增强调试体验;原生支持Zstandard压缩算法(PEP 784)提高效率;REPL交互环境升级更友好;UUID模块扩展支持新标准并优化性能;finally块语义强化(PEP 765)确保资源清理可靠性。这些改进使Python在后端开发、数据科学等领域更具竞争力。
51 5
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
|
29天前
|
数据采集 运维 API
把Postman调试脚本秒变Python采集代码的三大技巧
本文介绍了如何借助 Postman 调试工具快速生成 Python 爬虫代码,并结合爬虫代理实现高效数据采集。文章通过“跨界混搭”结构,先讲解 Postman 的 API 调试功能,再映射到 Python 爬虫技术,重点分享三大技巧:利用 Postman 生成请求骨架、通过 Session 管理 Cookie 和 User-Agent,以及集成代理 IP 提升稳定性。以票务信息采集为例,展示完整实现流程,探讨其在抗封锁、团队协作等方面的价值,帮助开发者快速构建生产级爬虫代码。
把Postman调试脚本秒变Python采集代码的三大技巧
|
2月前
|
数据采集 数据可视化 大数据
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
87 6
|
3月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
5月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
238 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
3月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
3月前
|
SQL 关系型数据库 数据库连接
|
5月前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
151 14
|
JavaScript 前端开发 网络架构
python中封装与解构
python中封装与解构
220 0

推荐镜像

更多