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