网站首页 > 技术文章 正文
无论是查找文件、复制文件,还是删除文件,这些事情虽然简单,但手动操作起来既耗时又容易出错。幸运的是,Python 提供了强大的文件操作功能,可以帮助我们高效地完成这些任务。
本文将通过具体的代码示例,详细讲解如何使用 Python 来实现文件操作的自动化,之后可以让AI帮忙写代码,方便灵活的使用。
#01快速定位目标文件
文件查找是文件操作中最基础的任务。无论是查找单个文件,还是查找特定后缀的文件,Python 都能轻松搞定。
(一)查找指定文件夹中的文件
假设你有一个文件夹,里面存放了各种文件,你想要快速找到某个特定的文件。可以使用 os.listdir() 方法来列出文件夹中的所有文件,然后通过简单的条件判断来查找目标文件。
import os
# 获取当前脚本所在的目录
cur_dir = os.path.dirname(os.path.abspath(__file__))
# 定位到目标文件夹
find_path = os.path.join(cur_dir, 'files')
# 提示用户输入要查找的文件名
find_file_name = input(f"请输入想在 {find_path} 中查找的文件名(按 q 退出):")
# 遍历文件夹中的文件
for item in os.listdir(find_path):
# 如果找到目标文件,打印文件路径并退出循环
if item == find_file_name:
print(f"文件找到:{os.path.join(find_path, item)}")
break
else:
# 如果没有找到文件,打印提示信息
print("文件未找到")
代码说明:
- os.listdir(find_path):列出指定路径下的所有文件和文件夹。
- os.path.join(find_path, item):将文件夹路径和文件名拼接成完整的文件路径。
- for...else 结构:如果循环正常结束(没有被 break 中断),则执行 else 块中的代码。
(二)递归查找文件
如果文件夹中包含多个子文件夹,而你需要在所有文件夹中查找某个文件,可以使用 os.walk() 方法。这个方法可以递归遍历文件夹及其子文件夹,帮助找到目标文件。
import os
# 获取当前脚本所在的目录
cur_dir = os.path.dirname(os.path.abspath(__file__))
# 定位到目标文件夹
find_path = os.path.join(cur_dir, 'files')
# 提示用户输入要查找的文件名
find_file_name = input(f"请输入想在 {find_path} 中查找的文件名(按 q 退出):")
# 使用 os.walk() 递归遍历文件夹
for root, dirs, files in os.walk(find_path):
# 遍历当前文件夹中的文件
for file in files:
# 如果找到目标文件,打印文件路径并退出循环
if file == find_file_name:
print(f"文件找到:{os.path.join(root, file)}")
break
else:
# 如果当前文件夹中没有找到文件,继续查找下一个文件夹
continue
# 如果找到文件,退出外层循环
break
else:
# 如果所有文件夹中都没有找到文件,打印提示信息
print("文件未找到")
代码说明:
- os.walk(find_path):递归遍历指定路径下的所有文件夹和文件。
- root:当前文件夹的路径。
- files:当前文件夹中的文件列表。
(三)查找特定后缀的文件
有时候,我们可能需要查找某个文件夹中所有特定后缀的文件,比如所有的 .txt 文件或 .xlsx 文件。
可以通过 path.splitext() 方法获取文件的后缀名,并通过条件判断来筛选目标文件。os.
import os
# 获取当前脚本所在的目录
cur_dir = os.path.dirname(os.path.abspath(__file__))
# 定位到目标文件夹
find_path = os.path.join(cur_dir, 'files')
# 提示用户输入要查找的文件后缀
extension_name = input("请输入要查找的文件后缀名(如 .txt、.xlsx 等):")
# 将输入的后缀名转换为小写,并添加点号
extensions = ['.' + ext.strip().lower() for ext in extension_name.split(",")]
# 初始化找到的文件计数器
found_files_count = 0
# 遍历文件夹中的文件
for item in os.listdir(find_path):
# 获取文件的后缀名
extension = os.path.splitext(item)[1].lower()
# 如果文件后缀符合要求,打印文件名并增加计数器
if extension in extensions:
print(f"找到文件:{item}")
found_files_count += 1
# 打印找到的文件总数
print(f"一共有 {found_files_count} 个文件")
代码说明:
- os.path.splitext(item):将文件名分割成文件名和后缀名两部分。
- extension.lower():将后缀名转换为小写,以便进行不区分大小写的比较。
- extensions:将用户输入的后缀名列表转换为小写,并添加点号。
#02高效管理文件
除了查找文件,我们还需要对文件进行各种操作,比如复制文件、移动文件、删除文件等。
这些操作不仅可以帮助我们更好地管理文件,还可以节省大量的时间和精力。
(一)批量复制文件
假设你有一个文件夹,里面存放了多个文件,你想要将这些文件复制到另一个文件夹中。可以使用 shutil.copy() 方法来复制文件。
import os
import shutil
# 提示用户输入源文件夹路径
source_folder_name = input("请输入源文件夹路径:")
# 提示用户输入目标文件夹路径
target_folder = input("请输入目标文件夹路径:")
# 遍历源文件夹中的文件
for item in os.listdir(source_folder_name):
# 构造源文件的完整路径
source_file = os.path.join(source_folder_name, item)
# 构造目标文件的完整路径
target_file = os.path.join(target_folder, item)
# 复制文件
shutil.copy(source_file, target_file)
print(f"文件 {item} 已复制到 {target_folder}")
代码说明:
- shutil.copy(source_file, target_file):将源文件复制到目标路径。
(二)批量移动文件
如果需要将文件从一个文件夹移动到另一个文件夹,可以使用 shutil.move() 方法。这个方法不仅会复制文件,还会删除原文件,从而实现文件的移动。
import os
import shutil
# 提示用户输入源文件夹路径
source_folder_name = input("请输入源文件夹路径:")
# 提示用户输入目标文件夹路径
target_folder = input("请输入目标文件夹路径:")
# 遍历源文件夹中的文件
for item in os.listdir(source_folder_name):
# 构造源文件的完整路径
source_file = os.path.join(source_folder_name, item)
# 构造目标文件的完整路径
target_file = os.path.join(target_folder, item)
# 移动文件
shutil.move(source_file, target_file)
print(f"文件 {item} 已移动到 {target_folder}")
代码说明:
- shutil.move(source_file, target_file):将源文件移动到目标路径。
(三)批量删除文件
如果需要删除某个文件夹中的所有文件,可以使用 os.remove() 方法。在删除文件之前,建议先确认一下,以免误删重要文件。
import os
# 提示用户输入文件夹路径
folder_name = input("请输入要删除文件的文件夹路径:")
# 遍历文件夹中的文件
for item in os.listdir(folder_name):
# 构造文件的完整路径
file_path = os.path.join(folder_name, item)
# 删除文件
os.remove(file_path)
print(f"文件 {item} 已删除")
代码说明:
- os.remove(file_path):删除指定路径的文件。
#02 模块化,让代码更简洁、更高效
在实际工作中,常常需要重复使用某些功能。为了避免重复编写代码,可以将这些功能封装成模块,方便在其他项目中重复使用。
以下是一个简单的模块化示例,包含了文件查找、复制、移动和删除的功能。
import os
import shutil
# 定义查找文件的函数
def find_files(folder_name, file_name):
"""
在指定文件夹中查找文件
:param folder_name: 文件夹路径
:param file_name: 要查找的文件名
:return: 文件路径列表
"""
found_files = []
for root, dirs, files in os.walk(folder_name):
for file in files:
if file == file_name:
found_files.append(os.path.join(root, file))
return found_files
# 定义复制文件的函数
def copy_files(source_folder_name, target_folder, file_extension='*'):
"""
复制指定后缀的文件
:param source_folder_name: 源文件夹路径
:param target_folder: 目标文件夹路径
:param file_extension: 文件后缀,默认为所有文件
:return: None
"""
for item in os.listdir(source_folder_name):
if item.endswith(file_extension):
source_file = os.path.join(source_folder_name, item)
target_file = os.path.join(target_folder, item)
shutil.copy(source_file, target_file)
print(f"文件 {item} 已复制到 {target_folder}")
# 定义移动文件的函数
def move_files(source_folder_name, target_folder, file_extension='*'):
"""
移动指定后缀的文件
:param source_folder_name: 源文件夹路径
:param target_folder: 目标文件夹路径
:param file_extension: 文件后缀,默认为所有文件
:return: None
"""
for item in os.listdir(source_folder_name):
if item.endswith(file_extension):
source_file = os.path.join(source_folder_name, item)
target_file = os.path.join(target_folder, item)
shutil.move(source_file, target_file)
print(f"文件 {item} 已移动到 {target_folder}")
# 定义删除文件的函数
def delete_files(folder_name, file_extension='*'):
"""
删除指定后缀的文件
:param folder_name: 文件夹路径
:param file_extension: 文件后缀,默认为所有文件
:return: None
"""
for item in os.listdir(folder_name):
if item.endswith(file_extension):
file_path = os.path.join(folder_name, item)
os.remove(file_path)
print(f"文件 {item} 已删除")
代码说明:
- os.walk(folder_name):递归遍历文件夹及其子文件夹。
- shutil.copy(source_file, target_file):复制文件
- shutil.move(source_file, target_folder):移动文件。
- os.remove(file_path)):删除文件。
在实际工作中,我们可以根据需求对这些代码进行修改和扩展。
希望本文的介绍能够帮助你快速掌握 Python 文件操作技巧,提高办公效率。
猜你喜欢
- 2025-08-03 Python内置模块:pathlib模块使用教程
- 2025-08-03 Python开发:Win10创建定时任务执行Python脚本
- 2025-08-03 Python 文件访问模式与定位操作:深度解析与实践应用
- 2025-08-03 Python中的paramiko库
- 2025-08-03 python中如何利用递归原理找出文件夹中的全部文件
- 2025-08-03 Python内置模块:shutil模块使用教程(文件与目录高级操作实践)
- 2025-08-03 python中12个文件处理高效技巧,不允许你还不知道
- 2025-08-03 Python-文件读写及异常处理
- 2025-08-03 Python 文件操作与读取:从基础到进阶的全面指南
- 2025-08-03 浅谈下Python中的async,await
- 08-06生产环境中使用的十大 Python 设计模式
- 08-06面试必备:Python内存管理机制(建议收藏)
- 08-06服务端开发面试必背——消息队列及它的主要用途和优点。附代码
- 08-06Python 栈:深度解析与应用
- 08-06Python中的多进程
- 08-06Python Logging 最佳实践
- 08-06Python并发数据结构实现原理
- 08-06用SendGrid和Redis队列用Python调度国际空间站的电子邮件
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)