基于python开发文件常见处理工具

Written by

in

文章目录
  • 目录
    • 1. 直接食用代码
      • 1.1 读文件
      • 1.2 写文件
      • 1.3 获取文件后缀
      • 1.4 打包文件(压缩)
      • 1.5 解压
      • 1.6 遍历文件夹
    • 2. 完整详解代码及示例演示
      • 2.1 完整代码
      • 2.2 示例演示

    读取文件中内容

    # 读取文件内容 file_path: 文件路径
    def read_file(file_path):
        # 打开文件
        with open(file_path, 'r', encoding='utf-8') as f:
            # 读取文件内容
            content = f.read()
            # 返回文件内容
            return content
    

    将内容写到文件中

    # 将内容写入文件 file_path: 文件路径, content: 文件内容
    def write_file(file_path, content):
        # 创建文件
        with open(file_path, 'w', encoding='utf-8') as f:
            # 写入内容
            f.write(content)
            # 关闭文件
            f.close()
    

    判断文件是否为压缩文件

    import os
    # 判断文件是否为压缩文件 file_path 文件路径
    def is_pack(file_path):
        # 获取文件扩展名
        ext = os.path.splitext(file_path)[1].lower()
        # 判断文件扩展名
        if ext in ['.zip', '.rar', '.7z']:
            # 是压缩文件则返回True
            return True
    

    压缩文件

    import os
    import zipfile
    # 将指定文件夹打包为 zip 文件 folder_path: 待压缩文件夹路径, output_path: 压缩文件保存路径
    def zip_folder(folder_path, output_path):
        # folder_path: 要打包的文件夹路径
        # output_path: 输出的 zip 文件路径
        # 创建 zip 文件
        with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zip_file:
            # 遍历文件夹
            for root, dirs, files in os.walk(folder_path):
                for file in files:
                    # 获取文件绝对路径
                    file_path = os.path.join(root, file)
                    # 获取文件在zip文件中的相对路径
                    reletive_path = os.path.relpath(file_path, folder_path)
                    # 添加文件到zip文件中
                    zip_file.write(file_path, os.path.relpath(file_path, folder_path))
    
    

    解压缩文件

    import subprocess
    import os
    import zipfile
    # 解压缩文件 filepath: 压缩文件路径, target_folder: 解压目标路径
    def unpack(filepath, target_folder):
    
        # 以上注释代码的整合 目的为了获取压缩包文件名(不带后缀)
        file_name_pre = os.path.splitext(os.path.basename(filepath))[0]
        print("filepath----> ",filepath)
        print("file_name_pre----> ",file_name_pre)
        print("target_folder----> ",target_folder)
        # target_folder = os.path.join(target_folder, file_name_pre)
    
        # 本地winrar命令集成
        command = [
                # 本地WinRAR.exe文件路径
                'C:\Program Files\WinRAR\WinRAR.exe',
                # 解压并保留完整目录结构
                'x',           
                # 传入源RAR文件的绝对路径(引号包裹,防止路径中有空格)
                os.path.abspath(filepath),
                # 目标目录(确保路径以一个反斜杠结束,否则WinRAR会出错),如果该参数省略,则会默认为当前目录
                target_folder.rstrip('\') + '\',
                # 覆盖已存在的文件
                '-o+',         
                # 将压缩包名称作为子目录添加到目标路径中,如果添加该参数,则压缩包名称会作为子目录添加到目标路径中,产生两层一样的目录
                # '-ad',
                # 后台运行
                # '-ibck',       
                # 自动确认所有提示
                '-y'           
            ]
        
        print("正在执行命令:", " ".join(command))
    
        # 运行命令 subprocess本身会处理空格问题
        result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    
        print("命令执行完毕")
        # 因为解压后的目录是子目录,故指定目录为解压后的目录, 即文件均在下面这个文件目录中
        target_folder = target_folder+"\"+file_name_pre
        print('target_folder2:',target_folder)
    

    获取文件夹中所有文件列表

    import os
    # 遍历文件夹,获取文件夹下所有文件列表 folder_path: 文件夹路径
    def iteration_folder(folder_path):
        
        # 获取目标目录下的所有文件路径
        # 定义一个空列表,用于存储所有文件路径
        file_list = []
        # 遍历指定目录下的所有文件和子目录
        for root, dirs, files in os.walk(folder_path):
            # 遍历文件
            for file in files:
                print('file---> ',file)
                # 获取文件路径
                file_path = os.path.join(root, file)
    
                # 将文件路径添加到列表中
                file_list.append(file_path)
        print('----------> file_list:',file_list)
    
        # 返回文件列表
        return file_list
    
    

    file_utils.py

    # python 工具 判断是否为压缩文件、读取文件、写文件、解压缩、遍历获取文件夹下所有文件
    
    
    # 所需引入的库
    import subprocess
    import os
    import zipfile
    
    # 读取文件内容 file_path: 文件路径
    def read_file(file_path):
        # 打开文件
        with open(file_path, 'r', encoding='utf-8') as f:
            # 读取文件内容
            content = f.read()
            # 返回文件内容
            return content
    
    
    # 将内容写入文件 file_path: 文件路径, content: 文件内容
    def write_file(file_path, content):
        # 创建文件
        with open(file_path, 'w', encoding='utf-8') as f:
            # 写入内容
            f.write(content)
            # 关闭文件
            f.close()
    
    
    # 判断文件是否为压缩文件 file_path 文件路径
    def is_pack(file_path):
        # 获取文件扩展名
        ext = os.path.splitext(file_path)[1].lower()
        # 判断文件扩展名
        if ext in ['.zip', '.rar', '.7z']:
            # 是压缩文件则返回True
            return True
    
    
    
    # 将指定文件夹打包为 zip 文件 folder_path: 待压缩文件夹路径, output_path: 压缩文件保存路径
    def zip_folder(folder_path, output_path):
        # folder_path: 要打包的文件夹路径
        # output_path: 输出的 zip 文件路径
        # 创建 zip 文件
        with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zip_file:
            # 遍历文件夹
            for root, dirs, files in os.walk(folder_path):
                for file in files:
                    # 获取文件绝对路径
                    file_path = os.path.join(root, file)
                    # 获取文件在zip文件中的相对路径
                    reletive_path = os.path.relpath(file_path, folder_path)
                    # 添加文件到zip文件中
                    zip_file.write(file_path, os.path.relpath(file_path, folder_path))
    
    
    # 解压缩文件 filepath: 压缩文件路径, target_folder: 解压目标路径
    def unpack(filepath, target_folder):
    
        # 以上注释代码的整合 目的为了获取压缩包文件名(不带后缀)
        file_name_pre = os.path.splitext(os.path.basename(filepath))[0]
        print("filepath----> ",filepath)
        print("file_name_pre----> ",file_name_pre)
        print("target_folder----> ",target_folder)
        # target_folder = os.path.join(target_folder, file_name_pre)
    
        # 本地winrar命令集成
        command = [
                # 本地WinRAR.exe文件路径
                'C:\Program Files\WinRAR\WinRAR.exe',
                # 解压并保留完整目录结构
                'x',           
                # 传入源RAR文件的绝对路径(引号包裹,防止路径中有空格)
                os.path.abspath(filepath),
                # 目标目录(确保路径以一个反斜杠结束,否则WinRAR会出错),如果该参数省略,则会默认为当前目录
                target_folder.rstrip('\') + '\',
                # 覆盖已存在的文件
                '-o+',         
                # 将压缩包名称作为子目录添加到目标路径中,如果添加该参数,则压缩包名称会作为子目录添加到目标路径中,产生两层一样的目录
                # '-ad',
                # 后台运行
                # '-ibck',       
                # 自动确认所有提示
                '-y'           
            ]
        
        print("正在执行命令:", " ".join(command))
    
        # 运行命令 subprocess本身会处理空格问题
        result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    
        print("命令执行完毕")
        # 因为解压后的目录是子目录,故指定目录为解压后的目录, 即文件均在下面这个文件目录中
        target_folder = target_folder+"\"+file_name_pre
        print('target_folder2:',target_folder)
    
    # 遍历文件夹,获取文件夹下所有文件列表 folder_path: 文件夹路径
    def iteration_folder(folder_path):
        
        # 获取目标目录下的所有文件路径
        # 定义一个空列表,用于存储所有文件路径
        file_list = []
        # 遍历指定目录下的所有文件和子目录
        for root, dirs, files in os.walk(folder_path):
            # 遍历文件
            for file in files:
                print('file---> ',file)
                # 获取文件路径
                file_path = os.path.join(root, file)
    
                # 将文件路径添加到列表中
                file_list.append(file_path)
        print('----------> file_list:',file_list)
    
        # 返回文件列表
        return file_list
    
    
    
    
    
    if __name__ == '__main__':
    
        # 1. 读取文件内容
        print("<--------文件读取测试--------> ")
        content = read_file(r'D:重载TEST2ZIPTEST2ZIPtest1.txt')
        print("content----> ",content)
        # 2. 写入文件内容
        write_file(r'D:重载TEST2ZIPTEST2ZIPtest4.txt',content)
    
    
        # 3. 检测文件是否为压缩文件
        print("<--------判断类型是否为压缩包--------> ")
        is_zip1 = is_pack(r'D:重载TEST2ZIPTEST2ZIPtest1.txt')
        print('----------> is_zip1:',is_zip1)
        is_zip2 = is_pack(r'D:重载TEST2ZIPTEST2ZIP.rar')
        print('----------> is_zip2:',is_zip2)
        # 特殊测试,该文件不存在,同样可以得到结果
        is_zip3 = is_pack(r'D:重载TEST2ZIPTEST2ZIPtest1.zip')
        print('----------> is_zip3:',is_zip3)
    
    
        # 4. 解压缩文件
        print("<--------判断类型是否为压缩包--------> ")
        unpack(r'D:重载TEST2ZIPTEST2ZIP.rar', r'D:重载TEST2ZIPrar_test')
    
        # 5. 压缩文件
        # print("<--------判断类型是否为压缩包--------> ")
    
        # 6. 获取指定目录下的所有文件
        # print("<--------判断类型是否为压缩包--------> ")
    

    2.2.1 读文件

    执行代码,输出读取结果

    如图

    2.2.2 写文件

    执行代码,查看结果

    指定位置查看是否生成文件

    2.2.3 获取文件后缀

    判断文件是否为压缩包

    执行代码,查看结果

    2.2.4 解压文件

    执行代码,查看指定目录是否有解压后的文件

    结果如下

    注意,这里解压缩后的目录是子目录,即指定目录下会生成一个子目录存放文件

    2.2.5 压缩文件

    执行代码查看结果

    如图压缩文件生成

    2.2.6 遍历文件夹

    获取文件夹中所有文件的列表

    执行代码,查看结果

    对比文件夹目录中的文件

    到此这篇关于基于python开发文件常见处理工具的文章就介绍到这了,更多相关python文件处理内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python处理大量Excel文件的十个技巧分享
    • Python中高效处理Excel文件的10个常用库操作指南
    • Python 文件批量处理操作的实现示例
    • Python中处理JSON文件的超详细指南
    • Python实用技巧之轻松处理大型文件
    • 基于Python实现文件处理程序

    站内搜索