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 遍历文件夹
获取文件夹中所有文件的列表
执行代码,查看结果
对比文件夹目录中的文件
📜文末寄语
- 🟠关注我,获取更多内容。
- 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
- 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
- 🔵加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
- 🟣点击下方名片获取更多内容🍭🍭🍭👇