从零开始构建:Python自定义脚本自动化你的日常任务

从零开始构建:Python自定义脚本自动化你的日常任务

Python 作为一种简洁且功能强大的编程语言,被广泛应用于各种自动化任务中。通过编写 Python 脚本,你可以轻松地将日常重复性工作自动化,例如文件操作、数据处理、网络爬虫、系统管理等。这篇博客将从零开始,带你构建自定义 Python 脚本,实现对一些常见任务的自动化。
在这里插入图片描述

一、为什么选择 Python 自动化?
  1. 简洁性:Python 语法非常直观、简洁,对于编写小型自动化脚本来说非常合适。
  2. 丰富的标准库和第三方库:Python 提供了大量内置库和第三方库,涵盖了从操作系统到网络的几乎所有自动化任务。
  3. 跨平台:Python 脚本可以在 Windows、macOS 和 Linux 等多种操作系统上运行,无需修改代码。
  4. 社区支持:Python 拥有庞大的开发者社区,遇到问题时,几乎可以通过在线社区找到解决方案。

接下来,我们将一步步展示如何编写自定义的 Python 脚本来实现日常任务的自动化。我们将涉及文件管理、自动化邮件发送和网络数据获取等示例。


在这里插入图片描述

二、环境准备

为了开始编写 Python 脚本,你需要具备以下条件:

  • 安装 Python:大多数操作系统默认都安装了 Python,你可以通过命令行输入 python --version 检查。如果没有安装,可以到Python 官网下载并安装。
  • 文本编辑器或 IDE:推荐使用 VSCode、PyCharm 等工具来编写和运行 Python 脚本。

在这里插入图片描述

三、示例一:自动化文件管理任务

首先,我们实现一个自动化文件管理的脚本。假设我们有一个文件夹,里面包含不同类型的文件(如图片、文档等),我们希望能够自动化分类这些文件,并将它们移动到指定的文件夹中。

1. 编写文件分类脚本
import os
import shutil# 定义文件类型与目标文件夹的映射关系
file_types = {'images': ['.jpg', '.png', '.gif'],'documents': ['.pdf', '.docx', '.txt'],'spreadsheets': ['.xls', '.xlsx'],'videos': ['.mp4', '.avi']
}# 源文件夹和目标文件夹路径
source_folder = '/path/to/your/source_folder'
destination_folder = '/path/to/your/destination_folder'# 创建目标文件夹(如果不存在)
for folder in file_types:folder_path = os.path.join(destination_folder, folder)if not os.path.exists(folder_path):os.makedirs(folder_path)# 遍历源文件夹中的所有文件
for filename in os.listdir(source_folder):file_ext = os.path.splitext(filename)[1].lower()  # 获取文件后缀file_path = os.path.join(source_folder, filename)# 根据文件后缀将文件移动到对应文件夹for folder, extensions in file_types.items():if file_ext in extensions:shutil.move(file_path, os.path.join(destination_folder, folder))print(f'Moved {filename} to {folder} folder')break
2. 代码说明:
  • 使用 os.listdir() 遍历源文件夹中的所有文件。
  • 通过 os.path.splitext() 获取文件的扩展名,并根据预定义的文件类型映射将其移动到相应的文件夹。
  • 如果目标文件夹不存在,使用 os.makedirs() 创建。
3. 运行脚本

将代码保存为 file_organizer.py,并在终端中运行:

python file_organizer.py

脚本会自动遍历源文件夹中的所有文件,并根据文件类型将它们移动到不同的文件夹中。这对于整理桌面、下载文件夹等非常有用。


在这里插入图片描述

四、示例二:自动发送邮件

有时候,我们需要自动化发送通知邮件,例如定时提醒、发送报告等。Python 提供了 smtplib 模块,配合 email 模块可以很方便地实现邮件自动发送。

1. 编写邮件发送脚本
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart# 邮件发送者和接收者
sender_email = 'your_email@gmail.com'
receiver_email = 'receiver_email@gmail.com'
password = 'your_password'# 创建邮件对象
message = MIMEMultipart()
message['From'] = sender_email
message['To'] = receiver_email
message['Subject'] = '自动化任务通知'# 邮件正文
body = '这是通过Python脚本发送的自动化邮件通知。'
message.attach(MIMEText(body, 'plain'))# 设置SMTP服务器并发送邮件
try:server = smtplib.SMTP('smtp.gmail.com', 587)server.starttls()  # 启用安全传输server.login(sender_email, password)server.sendmail(sender_email, receiver_email, message.as_string())server.quit()print('邮件发送成功!')
except Exception as e:print(f'邮件发送失败: {e}')
2. 代码说明:
  • 使用 smtplib.SMTP() 连接到 SMTP 邮件服务器。
  • 使用 MIMEMultipart() 创建邮件,并通过 MIMEText() 将邮件正文附加到消息中。
  • 调用 server.sendmail() 发送邮件。
3. 运行脚本

将代码保存为 send_email.py,运行前将 sender_emailreceiver_emailpassword 替换为真实信息。然后运行:

python send_email.py

这段代码将会通过 Gmail 发送一封自动邮件。为了确保安全性,可以在脚本中使用应用专用密码或配置更安全的邮件发送方式。


在这里插入图片描述

五、示例三:自动化网页数据爬取

网络爬虫是自动化脚本中的常见任务,Python 提供了 requestsBeautifulSoup 库,用于抓取网页数据并解析 HTML 内容。假设我们要抓取某个网站上的新闻标题,可以编写如下脚本。

1. 编写网页爬取脚本
import requests
from bs4 import BeautifulSoup# 目标网址
url = 'https://news.ycombinator.com/'# 发送HTTP请求并获取网页内容
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')# 查找并打印所有新闻标题
for item in soup.find_all('a', class_='storylink'):print(item.text)
2. 代码说明:
  • 使用 requests.get() 发送 HTTP 请求并获取网页内容。
  • 使用 BeautifulSoup 解析 HTML,并通过 find_all() 查找指定的 HTML 标签。
  • 在这个示例中,我们查找所有带有 storylink 类的 <a> 标签,并打印新闻标题。
3. 运行脚本

将代码保存为 news_scraper.py,并运行:

python news_scraper.py

脚本会抓取指定网站的新闻标题并输出到终端。通过类似的方法,你可以扩展脚本来抓取任何你感兴趣的数据。


在这里插入图片描述

六、如何将这些脚本整合成自动化工作流?

为了实现更高效的自动化,可以将不同的脚本整合到一个统一的流程中。举个例子,文件整理、数据抓取和邮件通知可以组合成一个定时执行的工作流。

1. 使用 cronTask Scheduler 定时执行

在 Linux/macOS 上,可以使用 cron 定时执行任务。例如,每天凌晨执行脚本:

crontab -e

添加如下定时任务,每天凌晨2点执行文件管理脚本:

0 2 * * * /usr/bin/python3 /path/to/file_organizer.py

在 Windows 上,可以使用 Task Scheduler 定时执行 Python 脚本。

2. 整合多个脚本

你还可以将不同的脚本放入一个主脚本中统一调度:

import subprocess# 依次执行文件整理、抓取新闻、发送邮件
subprocess.run(['python3', 'file_organizer.py'])
subprocess.run(['python3', 'news_scraper.py'])
subprocess.run(['python3', 'send_email.py'])

在这里插入图片描述

七、总结

通过 Python 自定义脚本,你可以轻松实现日常任务的自动化。本文展示了三个典型的自动化任务:文件管理、邮件发送和网页爬取。你可以根据自己的需求,编写更多脚本并将它们整合到自动化工作流中,提升工作效率。

八、更多日常生活中有用的 Python 自动化脚本

为了帮助大家进一步理解 Python 在日常任务中的应用,下面再展示几个更贴近生活的自动化脚本例子。这些脚本不仅可以提高工作效率,还能帮助你在日常生活中减少重复性劳动。


示例四:自动备份文件

备份是保障数据安全的关键步骤之一,但手动备份繁琐而容易被忽略。通过编写一个自动化备份脚本,你可以定期将重要文件复制到备份目录或云存储中。

1. 编写自动备份脚本
import os
import shutil
import time# 源文件夹和备份文件夹路径
source_folder = '/path/to/important_files'
backup_folder = '/path/to/backup'# 获取当前时间,创建以日期命名的备份文件夹
current_time = time.strftime('%Y%m%d%H%M%S')
backup_path = os.path.join(backup_folder, current_time)# 创建备份文件夹
os.makedirs(backup_path)# 复制所有文件到备份文件夹
for filename in os.listdir(source_folder):file_path = os.path.join(source_folder, filename)if os.path.isfile(file_path):shutil.copy(file_path, backup_path)print(f'备份完成!所有文件已复制到 {backup_path}')
2. 代码说明:
  • 使用 time.strftime() 获取当前时间,将备份文件夹命名为当前时间的格式。
  • 通过 os.listdir() 遍历源文件夹中的所有文件,并使用 shutil.copy() 将其复制到新的备份目录中。
  • 你可以将这个脚本定期运行,确保重要文件不会丢失。

示例五:自动化 PDF 合并

在处理文档时,可能需要将多个 PDF 文件合并为一个文件,尤其是在处理多页报告、发票或合同时。利用 Python 中的 PyPDF2 库,可以很方便地实现 PDF 文件的合并。

1. 安装依赖

首先,你需要安装 PyPDF2 库:

pip install PyPDF2
2. 编写 PDF 合并脚本
import PyPDF2
import os# 定义待合并的 PDF 文件目录
pdf_folder = '/path/to/pdf_files'
output_file = '/path/to/merged_output.pdf'# 初始化 PdfFileMerger 对象
pdf_merger = PyPDF2.PdfMerger()# 遍历目录中的所有 PDF 文件
for filename in os.listdir(pdf_folder):if filename.endswith('.pdf'):file_path = os.path.join(pdf_folder, filename)pdf_merger.append(file_path)# 将合并的 PDF 文件输出到指定位置
with open(output_file, 'wb') as f_out:pdf_merger.write(f_out)print(f'PDF 文件已合并并保存为 {output_file}')
3. 代码说明:
  • PyPDF2.PdfMerger() 用于合并多个 PDF 文件。
  • 脚本会自动遍历指定目录中的所有 PDF 文件,并将它们按顺序合并为一个文件。

示例六:自动发送微信消息

在日常生活中,及时发送通知或提醒(如天气提醒、事件提醒等)非常重要。通过结合 Python 和微信的 itchat 库,你可以编写一个自动发送微信消息的脚本。

1. 安装依赖

首先安装 itchat 库:

pip install itchat
2. 编写自动发送微信消息脚本
import itchat# 登录微信
itchat.auto_login(hotReload=True)# 查找好友(例如你自己)
friend = itchat.search_friends(name='Your Name')[0]# 发送消息
friend.send('这是通过Python自动发送的微信消息!')# 登出
itchat.logout()
3. 代码说明:
  • itchat.auto_login() 用于登录微信,你需要扫描二维码以验证登录。
  • 使用 itchat.search_friends() 查找好友,并通过 friend.send() 发送消息。
  • 此脚本可以结合其他信息来源(如天气预报、定时提醒)自动向自己或好友发送通知。

示例七:自动化图片批量处理

假设你有一个文件夹,里面包含了大量图片,你想要对这些图片进行批量处理,比如调整大小、转换格式等。这时可以利用 Python 中的 Pillow 库来实现自动化处理。

1. 安装依赖

首先安装 Pillow 库:

pip install Pillow
2. 编写图片批量处理脚本
from PIL import Image
import os# 定义图片文件夹和输出文件夹路径
image_folder = '/path/to/images'
output_folder = '/path/to/processed_images'# 定义处理参数
new_size = (800, 600)  # 新的图片尺寸# 遍历所有图片文件
for filename in os.listdir(image_folder):if filename.endswith('.jpg') or filename.endswith('.png'):img_path = os.path.join(image_folder, filename)img = Image.open(img_path)# 调整图片大小img = img.resize(new_size)# 保存处理后的图片output_path = os.path.join(output_folder, filename)img.save(output_path)print(f'所有图片已处理并保存在 {output_folder}')
3. 代码说明:
  • Image.open() 打开图片文件,img.resize() 用于调整图片大小。
  • 处理后的图片会保存到指定的输出文件夹中。

示例八:自动下载YouTube视频

对于需要下载在线视频资源的人来说,可以利用 pytube 库自动下载 YouTube 视频。

1. 安装依赖

首先安装 pytube 库:

pip install pytube
2. 编写 YouTube 视频下载脚本
from pytube import YouTube# 视频URL
video_url = 'https://www.youtube.com/watch?v=your_video_id'# 创建 YouTube 对象
yt = YouTube(video_url)# 选择最高质量的视频流
stream = yt.streams.get_highest_resolution()# 下载视频
stream.download(output_path='/path/to/download')print(f'视频已下载到指定目录')
3. 代码说明:
  • YouTube(video_url) 创建 YouTube 视频对象,get_highest_resolution() 获取最高分辨率的视频流。
  • 视频会下载到指定的文件夹中,供离线观看。

示例九:自动化系统清理

为了保持系统干净有序,定期清理缓存、临时文件等是很有必要的。你可以编写一个简单的 Python 脚本来自动删除指定目录中的临时文件。

1. 编写系统清理脚本
import os
import shutil# 定义要清理的目录
temp_folders = ['/path/to/temp1', '/path/to/temp2']# 遍历并删除临时文件夹中的文件
for folder in temp_folders:for filename in os.listdir(folder):file_path = os.path.join(folder, filename)try:if os.path.isfile(file_path) or os.path.islink(file_path):os.unlink(file_path)  # 删除文件或符号链接elif os.path.isdir(file_path):shutil.rmtree(file_path)  # 删除文件夹print(f'已删除 {file_path}')except Exception as e:print(f'删除 {file_path} 时出错: {e}')
2. 代码说明:
  • 通过 os.unlink() 删除文件,通过 shutil.rmtree() 删除文件夹及其所有内容。
  • 这个脚本适用于定期清理系统临时文件、浏览器缓存等。

在这里插入图片描述

九、结论

通过 Python 脚本自动化,你可以显著减少手动重复的工作量,提高日常生活中的工作效率。这篇文章中展示了多个有实际应用价值的自动化脚本,涵盖了文件管理、邮件发送、PDF 合并、图片处理等多个方面。

你可以根据自身需求扩展这些脚本,或者将它们结合成一个完整的自动化解决方案。Python 的强大和灵活性,使得它成为了实现日常任务自动化的理想工具。开始编写属于你自己的自动化脚本吧!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3--通用 button 组件实现

背景 在日常开发中,我们一般都是利用一些诸如:element-ui、element-plus、ant-design等组件库去做我们的页面或者系统 这些对于一些后台管理系统来说是最好的选择,因为后台管理系统其实都是大同小异的,包括功能、布局结构等 但是对于前台项目,比如官网、门户网站这些 …

【Linux驱动开发】嵌入式Linux驱动开发基本步骤,字符驱动和新字符驱动开发入门,点亮LED

【Linux驱动开发】嵌入式Linux驱动开发基本步骤&#xff0c;字符驱动和新字符驱动开发入门&#xff0c;点亮LED 文章目录 开发环境驱动文件编译驱动安装驱动自动创建设备节点文件 驱动开发驱动设备号地址映射&#xff0c;虚拟内存和硬件内存地址字符驱动旧字符驱动新字符驱动 …

live2d 实时虚拟数字人形象页面显示,对接大模型

live2dSpeek 测试不用gpu可以正常运行 https://github.com/lyz1810/live2dSpeek 运行的话还需要额外下载https://github.com/lyz1810/edge-tts支持语音 ## 运行live2dSpeek >npm install -g http-server >http-server . ## 运行edge-tts python edge-tts.py

使用 Helsinki-NLP 中英文翻译本地部署 - python 实现

通过 Helsinki-NLP 本地部署中英文翻译功能。该开源模型性价比相对高&#xff0c;资源占用少&#xff0c;对于翻译要求不高的应用场景可以使用&#xff0c;比如单词&#xff0c;简单句式的中英文翻译。 该示例使用的模型下载地址&#xff1a;【免费】Helsinki-NLP中英文翻译本…

心觉:激活潜意识财富密码:每天一练,财富自动来

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作200/1000天 为什么有些人总是轻而易举地吸引到财富 而你却努力多年仍然徘徊在财务的困境中&#xff1f; 你每天都在辛苦工作&…

MambaVision原理和源码调测

Hatamizadeh, Ali and Jan Kautz. “MambaVision: A Hybrid Mamba-Transformer Vision Backbone.” ArXiv abs/2407.08083 (2024): n. pag. 1.模型原理 关键思路&#xff1a; 通过重新设计Mamba的架构和在最终层增加自注意力块&#xff0c;提高了Mamba模型对视觉特征的建模能力…

C语言练习

题目&#xff1a; 1.运用switch选择语句&#xff0c;编写一段C语言&#xff0c;请根据输入的数字&#xff0c;显示相应的星期日&#xff0c;如果数字所对应的星期日并不存在请显示“抱歉&#xff0c;您输入的内容并不存在。” 分析&#xff1a;1.在本题中&#xff0c;要运用到…

C语言之扫雷小游戏(完整代码版)

说起扫雷游戏&#xff0c;这应该是很多人童年的回忆吧&#xff0c;中小学电脑课最常玩的必有扫雷游戏&#xff0c;那么大家知道它是如何开发出来的吗&#xff0c;扫雷游戏背后的原理是什么呢&#xff1f;今天就让我们一探究竟&#xff01; 扫雷游戏介绍 如下图&#xff0c;简…

【网络安全】漏洞案例:提升 Self-XSS 危害

未经许可,不得转载。 文章目录 Self-XSS-1Self-XSS-2Self-XSS-1 目标应用程序为某在线商店,在其注册页面的First Name字段中注入XSS Payload: 注册成功,但当我尝试登录我的帐户时,我得到了403 Forbidden,即无法登录我的帐户。 我很好奇为什么我无法登录我的帐户,所以我…

如何破解 AI 聊天机器人让它们吐露秘密!窥探 AI 系统指令的 10 种技巧

​ 有时&#xff0c;为了确保 AI 的安全性和透明性&#xff0c;用户需要自己动手&#xff0c;揭开系统指令的面纱。 如果人工智能现在已经成为生活中的事实&#xff0c;并影响着我们的福祉&#xff0c;人们理应知道它的运作原理。 对一些人来说&#xff0c;科幻电影中的经典…

新装ubuntu22.04必做两件事,不然可能没法用

一、换服务源 在全部里面找到软件和安装&#xff1b;打开后 在更多里面匹配一下最适合自己的软件源&#xff1b;这个过程比较漫长&#xff1b;要耐心等待 二、换软件安装中心 先执行&#xff1a; sudo apt upgrade 后执行&#xff1a; sudo apt install plasma-discover…

初级网络工程师之从入门到入狱(四)

本文是我在学习过程中记录学习的点点滴滴&#xff0c;目的是为了学完之后巩固一下顺便也和大家分享一下&#xff0c;日后忘记了也可以方便快速的复习。 网络工程师从入门到入狱 前言一、Wlan应用实战1.1、拓扑图详解1.2、LSW11.3、AC11.4、抓包1.5、Tunnel隧道模式解析1.6、AP、…

【AIF-C01认证】亚马逊云科技生成式 AI 认证正式上线啦

文章目录 一、AIF-C01简介二、考试概览三、考试知识点3.1 AI 和 ML 基础知识3.2 生成式人工智能基础3.3 基础模型的应用3.4 负责任 AI 准则3.5 AI 解决方案的安全性、合规性和监管 四、备考课程4.1 「备考训练营」 在线直播课4.2 「SkillBuilder」学习课程 五、常见问题六、参考…

Flutter技术学习

以下内容更适用于 不拘泥于教程学习&#xff0c;而是从简单项目入手的初学者。 在开始第一个项目之前&#xff0c;我们先要了解 两个概念。 Widget 和 属性 Widget 是用户界面的基本构建块&#xff0c;可以是任何 UI 元素。属性 是 widget 类中定义的变量&#xff0c;用于配…

【IEEE独立出版 | 厦门大学主办】第四届人工智能、机器人和通信国际会议(ICAIRC 2024)

【IEEE独立出版 | 厦门大学主办】 第四届人工智能、机器人和通信国际会议&#xff08;ICAIRC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication 2024年12月27-29日 | 中国厦门 >>往届均已成功见刊检索…

深入理解Transformer的笔记记录(精简版本)NNLM → Word2Vec

文章的整体介绍顺序为&#xff1a; NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT 自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理&#xff0c;通常需要将语言数学化&#xff0c;因为计算机机器只认数学符号…

Node.js管理工具NVM

nvm&#xff08;Node Version Manager&#xff09;是一个用于管理多个 Node.js 版本的工具。以下是 nvm 的使用方法和一些常见命令&#xff1a; 一、安装 nvm 下载 nvm&#xff1a; 地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases访问 nvm 的 GitHub 仓…

稳字诀! 洞见 强者的社交格局:从不恋战——早读(逆天打工人爬取热门微信文章解读)

都是文字 引言Python 代码第一篇 洞见 强者的社交格局&#xff1a;从不恋战第二篇 稳字诀结尾 引言 今天很奇怪 一直都挺烦造的 好像有很多事情忙 但是就是忙着找不定 不能定下心来 主要还是在股市 其他方面应该没啥 计划表还是不够给力 没办法把心在约定住 稳字诀 勤燃香,奋…

GPT和BERT

GPT和BERT都是基于Trm的应用&#xff0c;可以理解为GPT是decoder的应用&#xff0c;BERT可以说是encoder的应用 GPT 如图&#xff0c;就是GPT的原理&#xff0c;GPT是做生成式的任务的&#xff0c;没有办法进行下游任务改造&#xff0c;训练也是针对生成式的任务进行训练 BE…

云开发 | 微信小程序云开发无法获取数据库数据

1.我在我的云数据库中创建了一个数据表&#xff08;即collection数据集&#xff09;userList,并且存入了两条用户信息数据 2. 想要通过按钮触发事件拿取数据库中数据并且打印在控制台时&#xff0c;获取数据失败&#xff0c;控制台无输出 3. 初始化 | 在开始使用数据库 API 进…