必备的Python操作系统的6个自动化脚本

引言

在日常工作中,我们经常需要处理大量的文件操作,如重命名、搜索、同步等。通过编写自动化脚本,不仅可以提高效率,还能减少错误。本文将介绍几个常用的文件操作脚本,包括文件重命名、搜索、同步、压缩、解压以及日志监控。

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漫画教程,手机也能学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148856.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ads执行推特RPA机器人脚本

这个流程是这样的 1、进入到关注区,在一大堆fedds里面找到主账号发布的动态(主号在本地TXT文本中统计着) 2、判断当前账号有没对主号进行评论过 3、随机发布评论内容再随机上传一张图片(评论内容也是在本地TXT文本中统计着&…

索迪迈车载录像机设计方案

一、项目背景与概述 随着汽车产业的快速发展,车载监控及录像系统成为了现代车辆不可或缺的一部分。本项目针对车载录像机设计,致力于提升产品的稳定性、易用性及数据安全性。以下是详细的索迪迈车载录像机设计方案。 二、超级电容设计 车载录像机内置超…

Python 函数用法与底层分析

在编写函数时,函数体中的代码写法和我们前面讲述的基本一致,只是对代码实现了封装,并增加了函数调用、传递参数、返回计算结果等内容。 函数简介函数(function)的基本概念 1:一个程序由一个一个的任务组成;函数就是代…

VBA技术资料MF201:添加简单的右键菜单

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

守望稻田|碧桂园服务助力绿色大米推广,丰富万千家庭餐桌

在有着“中国优质稻米之乡”美誉的五常市,蓝天如洗,微风轻拂,金黄的稻浪在无垠的田野上起伏,丰收的气息随着稻香在这片肥沃的黑土地上弥漫开来。作为中国好粮油行动示范市,国家有机绿色稻香米核心产区,五常…

数据结构与算法 #时间复杂度 #空间复杂度

文章目录 前言 一、算法的复杂度 二、时间复杂度 三、空间复杂度 四、例题 1、例1:冒泡排序 2、例2: 3、例3: 4、例4: 二分查找 5、例5: 阶乘 6、例6: 斐波那契 五、常见算法复杂度 总结 前言 路漫漫其修远兮,吾将上下而求索&…

5个适合教师的AI工具,智能辅助,提升效率,让老师们工作更轻松!

随着人工智能技术的蓬勃发展,我们正步入一个由AI引领的变革时代,它不仅重塑了多个行业的面貌,更激发了我们对未来无限可能的想象。面对这一趋势,我们不应仅仅聚焦于其带来的挑战与冲击,而应积极拥抱变化,探…

猫咪掉毛背后的隐秘原因?除毛除臭宠物空气净化器双管齐下!

作为一个二胎家庭,两只猫咪,除了卖萌加倍之外,拉屎需要排队之外,家里最不缺就是毛了。作为一个名鼻炎患者真的很难顶。感受一下40度高温的养猫人,给掉毛怪疏毛浮毛飘飘,逃不过的饮水机,各个角落…

Deep Guided Learning for Fast Multi-ExposureImage Fusion

Abstract 我们提出了一种快速多重曝光图像融合(MEF)方法,即 MEF-Net,用于任意空间分辨率和曝光次数的静态图像序列。 我们首先将输入序列的低分辨率版本提供给全卷积网络以进行权重图预测。 然后,我们使用引导滤波器联…

HTML5 Video标签的属性、方法和事件汇总,以及常用视频插件推荐

🚀 个人简介:某大型国企资深软件研发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

【Unity3d Shader】毛玻璃效果

毛玻璃也叫​磨砂玻璃​:是用物理或化学方法处理过的一种表面粗糙不平整的半透明玻璃。 毛玻璃成像原理:毛玻璃表面不平整,光线通过毛玻璃被反射后向四面八方射出去(因为毛玻璃表面不是光滑的平面,使光产生了漫反射),折射到视网膜上已经是不完整的像,于是就看不清楚(…

关于 mybatis-plus-boot-starter 与 mybatis-spring-boot-starter 的错误

不是知道你是否 出现过这样的错误 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 经过各种度娘,无非就是让你检查三种情况 情况一:mapper.xml没有按照传统的maven架构进行放置 情况二:mybatis的配置信…

智能PPT行业赋能用户画像

智能PPT市场在巨大的需求前景下,已吸引一批不同类型的玩家投入参与竞争。从参与玩家类型来看,不乏各类与PPT创作有关的上下游企业逐步向智能PPT赛道转型进入,也包括顺应生成式AI技术热潮所推出的创业企业玩家。当前,智能PPT赛道发…

【网络协议栈】传输层的意义 和 UDP协议结构的解析(内含逻辑图解通俗易懂)

绪论​ “六年之约—jack”。本章是网络协议栈第二个主要模块 传输层,传输层在网络层中是非常重要的,他主要通过储存双方的端口记录数据的来源以及数据最终的去处,并且能一定的保证数据传输到达,以及快速高效的传递。本章主要讲到…

(附源码)基于django的电力工程作业现场物资管理系统的设计与实现-计算机毕设 22067

基于django的电力工程作业现场物资管理系统的设计与实现 摘 要 随着电力工程的快速发展,作业现场物资管理成为保障工程进度和质量的关键环节。本文旨在设计并实现一个基于Django框架的电力工程作业现场物资管理系统,以提高物资管理的效率和准确性。该系统…

约克VRF中央空调的优点不止一点点!

约克VRF中央空调的优点不止一点点!      整体造型简约大方,隐入吊顶里刚刚好,高级又很有氛围感。      用约克小方App就能自由操控,忘记关空调再也不用跑回来关啦,使用起来hin方便,懒人大喜&#x…

MySQL如何实现并发控制?(上)

前言 最开始学习数据库的时候都会被问到一个问题:“数据库系统相比与文件系统最大的优势是什么?”。具体的优势有很多,其中一个很重要的部分是:数据库系统能够进行更好的并发访问控制。 那么,数据库系统到底是怎么进…

通过 Flink 的火焰图定位反压

在 Apache Flink 中,Web UI 提供了丰富的监控工具来帮助用户分析和解决作业性能问题,其中火焰图(Flame Graph)是用于分析反压问题的一个强有力的工具。反压可能是由于作业中某些算子处理速度过慢,或者资源耗尽导致的。…

【解密 Kotlin 扩展函数】扩展函数的底层原理(十八)

导读大纲 1.1.1 从 Java 调用扩展函数1.1.2 扩展函数无法重载 1.1.1 从 Java 调用扩展函数 在编译器底层下,扩展函数是一种静态方法,它接受接收器对象作为第一个参数 调用它不涉及创建适配器对象或任何其他运行时开销这使得从 Java 使用扩展函数变得非常简单 调用静态方法并传…

使用k8s部署RainLoop-Webmail

说明 * rainloop最新源码官方下载地址:https://www.rainloop.net/downloads/ * 系统要求:https://www.rainloop.net/docs/system-requirements/ * 安装文档:https://www.rainloop.net/docs/installation/ * 更多详细资料请查看官方文档 * do…