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

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 读文件

执行代码,输出读取结果
如图
python 文件处理工具(包含文件读写、后缀获取、压缩和解压、文件夹遍历等)

2.2.2 写文件

执行代码,查看结果
指定位置查看是否生成文件
python 文件处理工具(包含文件读写、后缀获取、压缩和解压、文件夹遍历等)

2.2.3 获取文件后缀

判断文件是否为压缩包
执行代码,查看结果
python 文件处理工具(包含文件读写、后缀获取、压缩和解压、文件夹遍历等)

2.2.4 解压文件

执行代码,查看指定目录是否有解压后的文件
结果如下
python 文件处理工具(包含文件读写、后缀获取、压缩和解压、文件夹遍历等)

注意,这里解压缩后的目录是子目录,即指定目录下会生成一个子目录存放文件
python 文件处理工具(包含文件读写、后缀获取、压缩和解压、文件夹遍历等)

2.2.5 压缩文件

执行代码查看结果
python 文件处理工具(包含文件读写、后缀获取、压缩和解压、文件夹遍历等)

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

2.2.6 遍历文件夹

获取文件夹中所有文件的列表
执行代码,查看结果
python 文件处理工具(包含文件读写、后缀获取、压缩和解压、文件夹遍历等)对比文件夹目录中的文件

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


📜文末寄语

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