当前位置: 首页 > news >正文

python 文件处理工具(包含文件读写、后缀获取、压缩和解压、文件夹遍历等)

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

  • python 文件处理工具
    • 1. 直接食用代码
      • 1.1 读文件
      • 1.2 写文件
      • 1.3 获取文件后缀
      • 1.4 打包文件(压缩)
      • 1.5 解压
      • 1.6 遍历文件夹
    • 2. 完整详解代码及示例演示
      • 2.1 完整代码
      • 2.2 示例演示
        • 2.2.1 读文件
        • 2.2.2 写文件
        • 2.2.3 获取文件后缀
        • 2.2.4 解压文件
        • 2.2.5 压缩文件
        • 2.2.6 遍历文件夹


📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

python 文件处理工具

1. 直接食用代码

1.1 读文件

读取文件中内容

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

1.2 写文件

将内容写到文件中

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

1.3 获取文件后缀

判断文件是否为压缩文件

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

1.4 打包文件(压缩)

压缩文件

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))

1.5 解压

解压缩文件

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_preprint('target_folder2:',target_folder)

1.6 遍历文件夹

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

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

2. 完整详解代码及示例演示

2.1 完整代码

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']:# 是压缩文件则返回Truereturn 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_preprint('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_listif __name__ == '__main__':# 1. 读取文件内容print("<--------文件读取测试--------> ")content = read_file(r'D:\重载\TEST2ZIP\TEST2ZIP\test1.txt')print("content----> ",content)# 2. 写入文件内容write_file(r'D:\重载\TEST2ZIP\TEST2ZIP\test4.txt',content)# 3. 检测文件是否为压缩文件print("<--------判断类型是否为压缩包--------> ")is_zip1 = is_pack(r'D:\重载\TEST2ZIP\TEST2ZIP\test1.txt')print('----------> is_zip1:',is_zip1)is_zip2 = is_pack(r'D:\重载\TEST2ZIP\TEST2ZIP.rar')print('----------> is_zip2:',is_zip2)# 特殊测试,该文件不存在,同样可以得到结果is_zip3 = is_pack(r'D:\重载\TEST2ZIP\TEST2ZIP\test1.zip')print('----------> is_zip3:',is_zip3)# 4. 解压缩文件print("<--------判断类型是否为压缩包--------> ")unpack(r'D:\重载\TEST2ZIP\TEST2ZIP.rar', r'D:\重载\TEST2ZIP\rar_test')# 5. 压缩文件# print("<--------判断类型是否为压缩包--------> ")# 6. 获取指定目录下的所有文件# print("<--------判断类型是否为压缩包--------> ")

2.2 示例演示

2.2.1 读文件

执行代码,输出读取结果
如图
在这里插入图片描述

2.2.2 写文件

执行代码,查看结果
指定位置查看是否生成文件
在这里插入图片描述

2.2.3 获取文件后缀

判断文件是否为压缩包
执行代码,查看结果
在这里插入图片描述

2.2.4 解压文件

执行代码,查看指定目录是否有解压后的文件
结果如下
在这里插入图片描述

注意,这里解压缩后的目录是子目录,即指定目录下会生成一个子目录存放文件
在这里插入图片描述

2.2.5 压缩文件

执行代码查看结果
在这里插入图片描述

如图压缩文件生成
在这里插入图片描述

2.2.6 遍历文件夹

获取文件夹中所有文件的列表
执行代码,查看结果
在这里插入图片描述对比文件夹目录中的文件

在这里插入图片描述


📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

http://www.lqws.cn/news/552187.html

相关文章:

  • C++ STL深度剖析:Stack、queue、deque容器适配器核心接口
  • [Linux]从零开始的STM32MP157移植Ubuntu根文件系统教程
  • 华为云Flexus+DeepSeek征文|基于Dify构建文本/图像/视频生成工作流
  • linux面试常考
  • 【linux】Vm虚拟机ubuntu的接口ip掉了
  • scrapy+django+pyecharts+mysql 实现西安游客行为分析系统大屏_用户画像_空间分析_路线智能推荐
  • Minio入门+适配器模式(实战教程)
  • 鸿蒙5:布局组件
  • libxlsxwriter: 一个轻量级的跨平台的C++操作Excel的开源库
  • HTML表格中<tfoot>标签用法详解
  • 设计模式(策略,工厂,单例,享元,门面)+模板方法
  • 【数据挖掘】贝叶斯分类学习—NaiveBayes
  • git 挑选:git cherry-pick
  • GO 语言学习 之 函数
  • 为何需要防爆平板?它究竟有何能耐?
  • UniApp Vue3 模式下实现页面跳转的全面指南
  • 【笔记】 Docker目录迁移脚本
  • Python 数据分析与可视化 Day 10 - 数据合并与连接
  • 掌握 MySQL 的基石:全面解读数据类型及其影响
  • Swift Moya自定义插件打印日志
  • 【Bluedroid】蓝牙启动之BTM_reset_complete源码解析
  • GitHub Actions 实现 AWS ECS 服务的多集群安全重启方案
  • 《剖开WebAssembly 2.0:C++/Rust内存管理困局与破局》
  • 移动端日志平台EMAS
  • 接口自动化测试框架详解
  • 领域驱动设计(DDD)【22】之限定建模技术
  • 现代串口通讯UI框架性能对比
  • 【数据标注师】目标跟踪标注
  • 【MySQL数据库 | 第十篇】DCL语句----用户管理+权限控制
  • 商业秘密中经营信息的法律保护探析——以客户名册为例