必备的Python操作系统的6个自动化脚本
本文介绍了六个实用的文件操作脚本,包括文件重命名、文件搜索、目录同步、文件压缩与解压以及日志监控。这些脚本能够帮助我们高效地处理文件系统中的常见任务,提高工作效率。通过自动化这些任务,我们可以更加专注于核心业务逻辑。
创作不易,还请各位同学三连点赞!!收藏!!转发!!!
对于刚入门学习Python还找不到方向的小伙伴可以试试我的这份学习方法和籽料,免费自取!!
引言
在日常工作中,我们经常需要处理大量的文件操作,如重命名、搜索、同步等。通过编写自动化脚本,不仅可以提高效率,还能减少错误。本文将介绍几个常用的文件操作脚本,包括文件重命名、搜索、同步、压缩、解压以及日志监控。
1. 文件重命名脚本
在处理大量文件时,手动重命名不仅耗时还容易出错。下面是一个使用 Python 编写的文件批量重命名脚本。
import os
def 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 os
def 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 os
def 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 os
def 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 os
def 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 time
def 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) # 没有新行则等待
continue
print(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所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
视频教程
大信息时代,传统媒体远不如视频教程那么生动活泼,一份零基础到精通的全流程视频教程分享给大家
实战项目案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
副业兼职路线

更多推荐

所有评论(0)