【实用原创】20个Python自动化脚本,解放双手、事半功倍

在当今的快节奏工作环境中,自动化不再是一种奢侈,而是提高效率和精确性的必需手段。Python,以其易于学习和强大的功能而闻名,成为实现各种自动化任务的理想选择。无论是数据处理、报告生成,还是日常的文件管理,一个简单但有效的Python脚本就能大幅减轻您的工作负担。在本文中,我们将探索如何使用Python来创建多个自动化脚本,它不仅能够节省您的时间,还可以提高工作的准确率和效率。我们先来看第一个自动化脚本

自动化文件管理

整理目录中的文件


import os  
from shutil import move  
  
def sort\_files(directory\_path):  
    for filename in os.listdir(directory\_path):  
        if os.path.isfile(os.path.join(directory\_path, filename)):  
            # 获取文件扩展名  
            file\_extension = filename.split('.')\[-1\]  
            # 创建目标目录  
            destination\_directory = os.path.join(directory\_path, file\_extension)  
            if not os.path.exists(destination\_directory):  
                os.makedirs(destination\_directory)  
            # 移动文件  
            move(os.path.join(directory\_path, filename),   
                 os.path.join(destination\_directory, filename))  
  
# 调用函数,替换路径  
sort\_files('your\_directory\_path')  




这段代码包含一个名为sort_files的函数,它接受一个目录路径作为参数。函数遍历指定目录中的所有文件,并检查每个文件是否是一个常规文件(非目录等)。对于每个文件,它提取出文件的扩展名,创建一个以该扩展名命名的新目录(如果该目录不存在的话),然后将文件移动到新创建的对应扩展名的目录中。

移除空白的文档


import os  
  
def remove\_empty\_folders(directory\_path):  
    # 遍历目录树  
    for root, dirs, files in os.walk(directory\_path, topdown=False):  
        for folder in dirs:  
            folder\_path = os.path.join(root, folder)  
            # 如果目录为空,则删除  
            if not os.listdir(folder\_path):  
                os.rmdir(folder\_path)  
  
# 替换下面的路径为自己想清理的目录的路径  
remove\_empty\_folders('your\_directory\_path')  




这段代码定义了一个名为remove_empty_folders的函数,它接受一个目录路径作为参数。函数使用os.walk遍历给定目录及其所有子目录。os.walk函数以topdown=False的方式执行,这意味着遍历将从目录树的最底层开始,确保在删除空目录之前已处理了所有子目录。

对于每个找到的目录,代码检查该目录是否为空(即不包含任何文件或子目录)。如果是空目录,它就使用os.rmdir函数将其删除。

多个文件的重命名


import os  
  
def rename\_files(directory\_path, old\_name, new\_name):  
    # 遍历目录中的所有文件  
    for filename in os.listdir(directory\_path):  
        # 检查文件名中是否包含旧名称  
        if old\_name in filename:  
            # 生成新的文件名  
            new\_filename = filename.replace(old\_name, new\_name)  
            # 重命名文件  
            os.rename(os.path.join(directory\_path, filename),   
                      os.path.join(directory\_path, new\_filename))  
  
# 替换下面的路径和名称  
# 例如 directory\_path: 您要重命名文件的目录路径  
rename\_files('your\_directory\_path', 'old\_name', 'new\_name')  




这段代码定义了一个名为rename_files的函数,它接受三个参数:要处理的目录的路径、需要被替换的旧名称、以及新名称。该函数遍历指定目录中的所有文件,检查每个文件名是否包含旧名称。如果包含,它会用str.replace方法生成一个新的文件名,然后使用os.rename方法将文件重命名。

Excel办公自动化软件

读取和写入


import pandas as pd  
  
def read\_excel(file\_path):  
    # 读取Excel文件  
    df = pd.read\_excel(file\_path)  
    return df  
  
def write\_to\_excel(data, file\_path):  
    # 将数据写入Excel文件  
    df = pd.DataFrame(data)  
    df.to\_excel(file\_path, index=False)  
  
# 读取Excel文件  
dataframe = read\_excel('path\_to\_your\_input\_file.xlsx')  
  
# 将修改后的数据写入新的Excel文件  
write\_to\_excel(dataframe, 'path\_to\_your\_output\_file.xlsx')  




我们主要是调用pandas模块中的read_excel函数接受一个文件路径作为参数并且读取Excel文件,并将其作为DataFrame返回。write_to_excel函数则接受一个数据集和一个输出文件路径,将数据集转换为DataFrame,然后使用to_excel方法写入Excel文件。在to_excel方法中,index=False参数表示在输出的Excel文件中不包括行索引。

合并多个工作表


import pandas as pd  
  
def merge\_sheets(file\_path, output\_file\_path):  
    # 打开Excel文件  
    xls = pd.ExcelFile(file\_path)  
    # 创建一个空的DataFrame  
    df = pd.DataFrame()  
  
    # 遍历所有工作表  
    for sheet\_name in xls.sheet\_names:  
        # 读取每个工作表  
        sheet\_df = pd.read\_excel(xls, sheet\_name)  
        # 将每个工作表的数据追加到df中  
        df = df.append(sheet\_df, ignore\_index=True)  
  
    # 将合并后的数据写入新的Excel文件  
    df.to\_excel(output\_file\_path, index=False)  
  
# 替换为自己的文件路径  
merge\_sheets('path\_to\_your\_excel\_file.xlsx', 'path\_to\_your\_output\_file.xlsx')  




这段代码定义了一个名为merge_sheets的函数,它接受原始Excel文件的路径和输出文件的路径作为参数。函数首先使用pd.ExcelFile读取Excel文件,并创建一个空的DataFrame。然后,它遍历该Excel文件中的所有工作表,使用pd.read_excel逐个读取它们,并通过append方法将每个工作表的数据追加到之前创建的空DataFrame中。这里使用了ignore_index=True,意味着在合并数据时会重新生成索引。

最后,使用to_excel方法将合并后的数据保存到一个新的Excel文件中。在这个方法中,index=False参数表示在输出文件中不包括行索引。

图片处理

图片的修剪


from PIL import Image  
  
def resize\_image(input\_path, output\_path, width, height):  
    # 打开图片  
    image = Image.open(input\_path)  
    # 调整图片大小  
    resized\_image = image.resize((width, height), Image.ANTIALIAS)  
    # 保存调整后的图片  
    resized\_image.save(output\_path)  
  
def crop\_image(input\_path, output\_path, left, top, right, bottom):  
    # 打开图片  
    image = Image.open(input\_path)  
    # 裁剪图片  
    cropped\_image = image.crop((left, top, right, bottom))  
    # 保存裁剪后的图片  
    cropped\_image.save(output\_path)  
  
# 替换为自己的文件路径和参数  
resize\_image('path\_to\_input\_image.jpg', 'path\_to\_resized\_image.jpg', 800, 600)  
crop\_image('path\_to\_input\_image.jpg', 'path\_to\_cropped\_image.jpg', 100, 100, 400, 400)  




resize_image函数中,它接受输入路径、输出路径、以及新图片的宽度和高度作为参数。该函数使用PIL库打开图片,然后调用resize方法将图片大小调整为指定的宽度和高度。

crop_image函数接受输入路径、输出路径,以及裁剪区域的左、上、右、下四个坐标作为参数。该函数同样使用PIL库打开图片,然后使用crop方法根据提供的坐标裁剪图片。

添加水印


from PIL import Image, ImageDraw, ImageFont  
  
def add\_watermark(input\_path, output\_path, watermark\_text):  
    # 打开图片  
    image = Image.open(input\_path)  
    # 准备绘制对象  
    draw = ImageDraw.Draw(image)  
    # 设置字体(这里使用Arial,大小为36)  
    font = ImageFont.truetype('arial.ttf', 36)  
    # 在图片上添加水印文字  
    draw.text((10, 10), watermark\_text, fill=(255, 255, 255, 128), font=font)  
    # 保存带有水印的图片  
    image.save(output\_path)  
  
# 替换为自己的文件路径和水印文本  
add\_watermark('path\_to\_input\_image.jpg', 'path\_to\_watermarked\_image.jpg', 'Your Watermark Text')  




这段代码定义了一个名为add_watermark的函数,它接受输入图片的路径、输出图片的路径和水印文本作为参数。该函数首先使用PIL库打开图片,然后创建一个ImageDraw对象以便在图片上绘制文本。接下来,设置字体(本例中使用Arial字体,字号为36),并使用draw.text方法将水印文本绘制到图片上。最后,保存带有水印的图片到指定的输出路径。

创建缩略图


from PIL import Image  
  
def create\_thumbnail(input\_path, output\_path, size=(128, 128)):  
    # 打开图片  
    image = Image.open(input\_path)  
    # 创建缩略图  
    image.thumbnail(size)  
    # 保存缩略图  
    image.save(output\_path)  
  
# 替换为自己的文件路径  
create\_thumbnail('path\_to\_input\_image.jpg', 'path\_to\_thumbnail\_image.jpg')  




在这段代码中,create_thumbnail函数接受三个参数:输入图片的路径、输出图片的路径,以及缩略图的尺寸(默认为128x128像素)。函数使用PIL库打开原始图片,然后调用thumbnail方法来创建缩略图。

系统任务

系统进程管理


import psutil  
  
def get\_running\_processes():  
    # 获取当前运行的进程信息  
    return \[p.info for p in psutil.process\_iter(\['pid', 'name', 'username'\])\]  
  
def kill\_process\_by\_name(process\_name):  
    # 遍历当前运行的进程  
    for p in psutil.process\_iter(\['pid', 'name', 'username'\]):  
        # 如果进程名匹配,则终止进程  
        if p.info\['name'\] == process\_name:  
            p.kill()  
  
# 获取运行中的进程列表  
running\_processes = get\_running\_processes()  
  
# 杀死指定名称的进程(请谨慎使用)  
# kill\_process\_by\_name('process\_name\_here')  




get_running_processes函数中,使用psutil.process_iter方法来迭代当前运行的所有进程,并获取每个进程的pid(进程ID)、name(进程名)和username(运行该进程的用户)。这些信息被收集在一个列表中并返回。

kill_process_by_name函数也使用psutil.process_iter来遍历所有进程,但它检查每个进程的名称是否与给定的process_name相匹配。如果找到匹配的进程,它使用kill方法终止该进程。

PDF文件操作

多个PDF文件合并


import PyPDF2  
  
def merge\_pdfs(input\_paths, output\_path):  
    # 创建PDF合并器对象  
    pdf\_merger = PyPDF2.PdfMerger()  
      
    # 遍历所有输入路径并添加到合并器  
    for path in input\_paths:  
        with open(path, 'rb') as f:  
            pdf\_merger.append(f)  
      
    # 将合并后的PDF写入输出文件  
    with open(output\_path, 'wb') as f:  
        pdf\_merger.write(f)  
  
# 替换为自己的PDF文件路径  
input\_pdf\_paths = \['pdf1.pdf', 'pdf2.pdf', 'pdf3.pdf'\]  
output\_pdf\_path = 'merged.pdf'  
merge\_pdfs(input\_pdf\_paths, output\_pdf\_path)  




在这个脚本中,merge_pdfs函数接受两个参数:一个包含要合并的PDF文件路径的列表input_paths和一个输出文件路径output_path。函数首先创建了一个PyPDF2.PdfMerger对象,然后逐个打开输入列表中的PDF文件,并使用append方法将它们添加到合并器中。最后,使用write方法将合并后的PDF输出到指定的文件路径。

PDF文件密码保护


import PyPDF2  
  
def add\_password\_protection(input\_path, output\_path, password):  
    # 打开要加密的PDF文件  
    with open(input\_path, 'rb') as f:  
        pdf\_reader = PyPDF2.PdfFileReader(f)  
        pdf\_writer = PyPDF2.PdfFileWriter()  
  
        # 复制所有页面到写入器对象  
        for page\_num in range(pdf\_reader.numPages):  
            page = pdf\_reader.getPage(page\_num)  
            pdf\_writer.addPage(page)  
  
        # 为PDF文件设置密码  
        pdf\_writer.encrypt(password)  
  
        # 写入加密后的PDF到输出文件  
        with open(output\_path, 'wb') as output\_file:  
            pdf\_writer.write(output\_file)  
  
# 请替换为自己的文件路径和密码  
input\_pdf\_path = 'input.pdf'  
output\_pdf\_path = 'protected.pdf'  
password = 'your\_password'  
add\_password\_protection(input\_pdf\_path, output\_pdf\_path, password)  




在这段代码中,add_password_protection函数接受输入文件路径input_path、输出文件路径output_path和密码password作为参数。它首先打开输入的PDF文件,使用PyPDF2.PdfFileReader读取PDF内容。然后,创建一个PyPDF2.PdfFileWriter对象,将从读取器对象中获取的所有页面添加到写入器对象中。使用encrypt方法为PDF设置密码。最后,将加密后的PDF内容写入到输出文件中。

#学习资源推荐

零基础Python学习资源介绍

👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈
在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉100道Python练习题👈
检查学习结果。
在这里插入图片描述
👉面试刷题👈
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

资料领取

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何配置SSH实现无公网ip远程连接访问Deepin操作系统

📑前言 本文主要是配置SSH实现无公网ip远程连接访问Deepin操作系统的文章,如果有什么需要改进的地方还请大佬指出⛺️** 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 &…

06 MP之自动填充+SQL执行的语句和速度分析

1. 自动填充 在项目中有一些属性,比如常见的创建时间和更新时间可以设置为自动填充。 1.1 实例 需求: 将创建时间和更新时间设置为自动填充, 这样每次插入数据时可以不用理会这两个字段 1.1.1 在数据库增加字段 默认开启驼峰映射 createTime --> create_time…

Linux环境下的基本指令

最便捷Linux环境就是用云服务器,下载一个远程终端软件进行操作即可。 远程终端软件这里我比较推荐XShell软件,下载官网https://www.netsarang.com/products/xsh_overview.html 下载安装的时候选择 "home/school" 则为免费版本。 查看 Linux …

加速大规模商业化!量子信息公司Infleqtion收购两家集成硅光子公司

​内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨卉可 沛贤 深度好文:1200字丨10分钟阅读 近期,美国量子信息公司Infleqtion宣布成功收购两家集成硅光子公司:SiNoptiq公司和Morton…

从小白到入门webrtc音视频通话

0. 写在前面 先会骑车,再研究为什么这么骑,才是我认为学习技术的思路,底部付了demo例子,根据例子上面的介绍即可运行。 1. 音视频通话要用到的技术简介 websocket 介绍:1. 服务器可以向浏览器推送信息;2…

CSS的Day05(浮动+flex布局)

跟着黑马程序员的课,稍稍对CSS的了解 常见的显示模式:行内、块级、行内块 在HTML中,标准流也称为文档流或普通流,是指元素按照其在HTML文档中的出现顺序依次排列的方式。在标准流中,元素会自动占据父容器的空间&#…

哪些骨传导蓝牙立体声耳机好?骨传导蓝牙立体声耳机高性价比推荐

对许多人来说,音乐已成为他们日常生活的一部分。不论是作为运动的动力还是休闲放松时的柔和旋律,优质的耳机能极大地丰富我们的听觉享受。如果你对传统入耳式的不适感到厌烦,那么骨传导蓝牙立体声耳机将会是你理想的替代品。很多人就问了&…

for循环的多重跳出

for的多重跳出 1.前言2.标签使用3.使用异常的方式 本文在jdk17中测试通过 1.前言 前段时间面试时,面试官问我多重for循环如何跳出,我懵了,今天特别的研究了一下 本文主要说的不是continue与break,而是少用的另类操作 1.continue:…

支持向量机

支持向量机(Support Vector Machine,SVM)是一个非常优雅的算法,具有非常完善的数学理论,常用于数据分类,也可以用于数据的回归预测中。支持向量机在许多领域都有广泛的应用,如文本分类、图像识别…

SpringBoot中的WebMvcConfigurer

SpringBoot中的WebMvcConfigurer 一、WebMvcConfigurer二、页面跳转控制器三、数据格式化1.Formatter\<T>2.内容转换器 四、拦截器 一、WebMvcConfigurer WebMvcConfigurer 作为配置类&#xff0c;采用 JavaBean 的形式来代替传统的 XML 配置文件形式&#xff0c;进而针…

【Linux】文件周边002之初步理解文件管理(打开的文件)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.&#xff08;打开…

SSH免密切换服务器案例-ssh协议(公钥和私钥)

公钥和私钥理解 公钥提供加密&#xff0c;私钥解密&#xff0c;公钥可以共享&#xff0c;私钥不可以。举例公钥相当于锁头&#xff0c;可以给别人用&#xff0c;钥匙相当于私钥&#xff0c;只能开自己发出去的锁头&#xff0c;也就是私钥和公钥成对&#xff0c;私钥只能解密对…

Go指针探秘:深入理解内存与安全性

目录 1. 指针的基础1.1 什么是指针&#xff1f;1.2 内存地址与值的地址1.2.1 内存中的数据存储1.2.2 如何理解值的地址 2. Go中的指针操作2.1 指针类型和值2.1.1 基本数据类型的指针2.1.2 复合数据类型的指针 2.2 如何获取一个指针值2.3 指针&#xff08;地址&#xff09;解引用…

框架学习Maven

声明&#xff1a;本文来源于黑马程序员PDF讲义 做为一名Java开发工程师&#xff0c;后端 Web开发技术是我们学习的重点&#xff0c;后端Web开发技术的学习&#xff0c;我们会先学习Java项目的构建工具&#xff1a;Maven 初识Maven Maven是Apache旗下的一个开源项目&#xff…

建筑行业数字化:从设计到运维的全面革新

随着科技的快速发展&#xff0c;数字化技术在各行各业中的应用越来越广泛。建筑行业作为传统产业&#xff0c;也在积极拥抱数字化技术&#xff0c;以提高效率、降低成本并实现可持续发展。本文将主要探讨建筑行业数字化的几个关键领域&#xff0c;包括建筑设计数字化、施工管理…

【爬虫作业】python爬虫作业——爬取汽车之家

爬取汽车之家期末作业&#xff1a; 代码如下所示&#xff1a; import random import timeimport requests #发送网络请求 import parsel import csv # 1.发送网络请求 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like G…

LFU缓存(Leetcode460)

例题&#xff1a; 分析&#xff1a; 这道题可以用两个哈希表来实现&#xff0c;一个hash表&#xff08;kvMap&#xff09;用来存储节点&#xff0c;另一个hash表&#xff08;freqMap&#xff09;用来存储双向链表&#xff0c;链表的头节点代表最近使用的元素&#xff0c;离头节…

APN设置流程分析

源码流程分析 前期概要 此流程分析是在不同平台可能不一致,只能作为参考文档,是属于一个通用流程文档。 源码分析 入口 首先是界面,我在此平台的界面如下: 对应的入口源码位置在Settings的ApnSettings中

CAN通信----(创芯科技)CAN分析仪----转CANTest使用

点击进入官方链接进行下载创芯科技 CAN分析仪资料包&#xff1a; 创芯科技的官网&#xff1a;https://m.zhcxgd.com/ 我使用的是至尊版红色带OBD转接头的&#xff1a; 所有下图是我选择…

企业网络采用SD-WAN的优势

近年来&#xff0c;SD-WAN成为企业网络领域的一项热门技术&#xff0c;为传统网络带来了新的变革。SD-WAN&#xff08;Software Defined Wide Area Network&#xff0c;软件定义广域网&#xff09;以其灵活性、可管理性和低成本而备受青睐。它不仅能够创建成熟的专用网络&#…