引言
在日常工作中,我们经常需要处理大量的文件操作,如重命名、搜索、同步等。通过编写自动化脚本,不仅可以提高效率,还能减少错误。本文将介绍几个常用的文件操作脚本,包括文件重命名、搜索、同步、压缩、解压以及日志监控。
Python入门基础 | 文末有惊喜福利
1. 文件重命名脚本
在处理大量文件时,手动重命名不仅耗时还容易出错。下面是一个使用 Python 编写的文件批量重命名脚本。
import osdef rename_files(directory, prefix="new_"):"""批量重命名指定目录下的所有文件。:param directory: 要处理的文件夹路径:param prefix: 新文件名前缀,默认为 "new_""""# 获取指定目录下所有文件名files = os.listdir(directory)for index, file in enumerate(files):# 获取文件扩展名extension = os.path.splitext(file)[1]# 构建新文件名new_name = f"{prefix}{index}{extension}"# 拼接完整路径old_path = os.path.join(directory, file)new_path = os.path.join(directory, new_name)# 重命名文件os.rename(old_path, new_path)print(f"Renamed {file} to {new_name}")# 使用示例
rename_files("/path/to/your/directory")
输出示例:
Renamed old_file1.txt to new_0.txt
Renamed old_file2.jpg to new_1.jpg
...
代码解析:
os.listdir()
返回指定目录下的所有文件和子目录名。-
os.path.splitext()
分离文件名与扩展名。 -
os.path.join()
拼接路径。 -
os.rename()
用于重命名文件。
2. 文件搜索脚本
在文件系统中查找特定文件是常见的需求。此脚本可以在指定目录及其子目录中搜索包含特定字符串的文件。
import osdef search_files(directory, keyword):"""在指定目录及其子目录中搜索包含特定字符串的文件。:param directory: 要搜索的目录:param keyword: 关键词"""for root, dirs, files in os.walk(directory):for file in files:if keyword in file:print(os.path.join(root, file))# 使用示例
search_files("/path/to/your/directory", "example")
输出示例:
/path/to/your/directory/subdir/example.txt
/path/to/your/directory/subdir/another_example.docx
...
代码解析:
os.walk()
遍历指定目录树中的文件名。-
root
是当前目录路径。 -
dirs
是该目录下的子目录列表。 -
files
是该目录下的文件列表。
3. 目录同步脚本
同步两个目录的内容,在备份或部署场景中非常有用。下面这个脚本可以将源目录中的所有文件复制到目标目录中。
import shutil
import osdef sync_directories(src, dst):"""同步两个目录的内容。:param src: 源目录:param dst: 目标目录"""# 创建目标目录(如果不存在)if not os.path.exists(dst):os.makedirs(dst)# 复制文件for item in os.listdir(src):s = os.path.join(src, item)d = os.path.join(dst, item)if os.path.isdir(s):sync_directories(s, d)else:shutil.copy2(s, d)print(f"Copied {s} to {d}")# 使用示例
sync_directories("/path/to/source", "/path/to/destination")
输出示例:
Copied /path/to/source/file1.txt to /path/to/destination/file1.txt
Copied /path/to/source/subdir/file2.txt to /path/to/destination/subdir/file2.txt
...
代码解析:
-
shutil.copy2()
复制文件并保留元数据。 -
使用递归调用来处理子目录。
4. 文件压缩脚本
在传输或存储大文件时,压缩文件可以显著节省空间和时间。以下脚本可以将指定目录下的所有文件压缩成一个 .zip
文件。
import zipfile
import osdef compress_directory(directory, output_zip):"""将指定目录下的所有文件压缩成一个 .zip 文件。:param directory: 要压缩的目录:param output_zip: 输出的 .zip 文件路径"""with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:for root, dirs, files in os.walk(directory):for file in files:file_path = os.path.join(root, file)arcname = os.path.relpath(file_path, directory)zipf.write(file_path, arcname=arcname)print(f"Added {file_path} to {output_zip}")# 使用示例
compress_directory("/path/to/your/directory", "/path/to/output.zip")
输出示例:
Added /path/to/your/directory/file1.txt to /path/to/output.zip
Added /path/to/your/directory/subdir/file2.txt to /path/to/output.zip
...
代码解析:
-
zipfile.ZipFile()
创建一个新的.zip
文件对象。 -
write()
方法将文件添加到.zip
文件中。 -
os.path.relpath()
计算相对路径。
5. 文件解压脚本
与压缩脚本相对应,解压脚本可以将压缩文件还原成原始文件结构。以下脚本可以解压指定的 .zip
文件到指定目录。
import zipfile
import osdef extract_zip(zip_file, output_directory):"""解压指定的 .zip 文件到指定目录。:param zip_file: 要解压的 .zip 文件路径:param output_directory: 输出目录"""with zipfile.ZipFile(zip_file, 'r') as zipf:zipf.extractall(output_directory)print(f"Extracted all files from {zip_file} to {output_directory}")# 使用示例
extract_zip("/path/to/input.zip", "/path/to/output_directory")
输出示例:
Extracted all files from /path/to/input.zip to /path/to/output_directory
代码解析:
-
extractall()
方法将.zip
文件中的所有文件解压到指定目录。 -
os.path.join()
拼接路径。
6. 日志监控脚本
对于服务器管理和运维来说,实时监控日志文件非常重要。以下脚本可以实时监控指定的日志文件,并在控制台打印新增的内容。
import timedef monitor_log_file(log_file):"""实时监控指定的日志文件,并在控制台打印新增的内容。:param log_file: 要监控的日志文件路径"""with open(log_file, 'r') as file:file.seek(0, 2) # 移动到文件末尾while True:line = file.readline()if not line:time.sleep(1) # 没有新行则等待continueprint(line.strip())# 使用示例
monitor_log_file("/path/to/logfile.log")
输出示例:
2023-10-01 12:00:00 - INFO - Some message
2023-10-01 12:00:01 - ERROR - An error occurred
...
代码解析:
file.seek(0, 2)
将文件指针移动到文件末尾。-
readline()
读取一行。 -
time.sleep(1)
暂停一秒以减少 CPU 占用。
总结
本文介绍了六个实用的文件操作脚本,包括文件重命名、文件搜索、目录同步、文件压缩与解压以及日志监控。这些脚本能够帮助我们高效地处理文件系统中的常见任务,提高工作效率。通过自动化这些任务,我们可以更加专注于核心业务逻辑。
文末福利
如果你对Python感兴趣的话,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。
也可以微信扫描下方CSDN官方认证二维码免费获取【保证100%免费】
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习