21个Python脚本自动执行日常任务(1)

alt

引言

作为编程领域摸爬滚打超过十年的老手,我深刻体会到,自动化那些重复性工作能大大节省我们的时间和精力。

Python以其简洁的语法和功能强大的库支持,成为了编写自动化脚本的首选语言。无论你是专业的程序员,还是希望简化日常工作的普通人,Python都能提供你需要的工具。

本文[1]将介绍我实际使用过的21个Python脚本,它们能帮助你自动化各种任务,特别适合那些希望在工作中节省时间、提升效率的朋友。

1. 批量修改文件名

手动一个个修改文件名既费时又费力,但借助Python的os模块,你可以轻松实现自动化批量改名。

下面是一个示例脚本,它能够根据指定的模式,批量重命名文件夹中的多个文件:

import os

def bulk_rename(folder_path, old_name_part, new_name_part):
    for filename in os.listdir(folder_path):
        if old_name_part in filename:
            new_filename = filename.replace(old_name_part, new_name_part)
            os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))
            print(f"Renamed {filename} to {new_filename}")

folder = '/path/to/your/folder' bulk_rename(folder, 'old_part''new_part')

这个脚本查找文件名中包含 old_name_part 的文件,并将这部分替换为 new_name_part

2. 自动备份文件

我们都知道定期备份文件的重要性,这个任务可以通过 Python 的 shutil 模块轻松实现自动化。

这个脚本会将一个目录中的所有文件复制到另一个目录,用于备份:

import shutil
import os

def backup_files(src_dir, dest_dir):
    if not os.path.exists(dest_dir):
        os.makedirs(dest_dir)
    for file in os.listdir(src_dir):
        full_file_name = os.path.join(src_dir, file)
        if os.path.isfile(full_file_name):
            shutil.copy(full_file_name, dest_dir)
            print(f"Backed up {file} to {dest_dir}")

source = '/path/to/source/directory' destination = '/path/to/destination/directory' backup_files(source, destination)

你可以利用任务计划工具,比如 Linux 的 cron 或 Windows 的 Task Scheduler,来设置这个脚本每天自动执行。

3. 从网上下载文件

如果你经常需要从网上下载文件,那么可以通过 aiohttp 库来自动化这个过程。

以下是一个简单的脚本,用于从网址下载文件:

import aiohttp
import asyncio
import aiofiles

async def download_file(url, filename):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            async with aiofiles.open(filename, 'wb'as file:
                await file.write(await response.read())
            print(f"Downloaded {filename}")

urls = {
    'https://example.com/file1.zip''file1.zip',
    'https://example.com/file2.zip''file2.zip'
}

async def download_all():
    tasks = [download_file(url, filename) for url, filename in urls.items()]
    await asyncio.gather(*tasks)

asyncio.run(download_all())

这个脚本会从指定的网址下载文件,并将其存储到你指定的目录中。

4. 自动化电子邮件报告

如果你需要定期发送电子邮件报告,可以通过 smtplib 库实现自动化,该库使得从 Gmail 账户发送邮件变得简单:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(subject, body, to_email):
    sender_email = 'youremail@gmail.com'
    sender_password = 'yourpassword'
    receiver_email = to_email

    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain'))

    try:
        server = smtplib.SMTP('smtp.gmail.com'587)
        server.starttls()
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())
        server.quit()
        print("Email sent successfully!")
    except Exception as e:
        print(f"Failed to send email: {e}")

subject = 'Monthly Report'
body = 'Here is the monthly report.'
send_email(subject, body, 'receiver@example.com')

这个脚本会向指定的收件人发送一封包含主题和内容的简单邮件。如果你采用这种方法,请记得在 Gmail 中开启“低安全性应用”的权限。

5. 任务调度(任务自动化)

通过 schedule 库,你可以轻松地设置任务计划,实现在特定时间自动执行任务,例如发送邮件或运行备份脚本:

import schedule
import time

def job():
    print("Running scheduled task!")

# Schedule the task to run every day at 10:00 AM
schedule.every().day.at("10:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

这个脚本会持续运行,并在设定的时间点执行任务,例如,每天的上午10点。

6. 网络爬取以收集数据

采用 aiohttp 库进行异步HTTP请求,相比传统的同步请求库,能够提高网络爬取的效率。

这个示例展示了如何同时抓取多个网页。

import aiohttp
import asyncio
from bs4 import BeautifulSoup

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def scrape(urls):
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url) for url in urls]
        html_pages = await asyncio.gather(*tasks)
        for html in html_pages:
            soup = BeautifulSoup(html, 'html.parser')
            print(soup.title.string)

urls = ['https://example.com/page1''https://example.com/page2'] asyncio.run(scrape(urls))

7. 社交媒体内容自动化发布

如果你负责运营社交媒体账号,可以通过使用 Tweepy(针对 Twitter)和 Instagram-API(针对 Instagram)等库来实现内容的自动发布。

以下是一个使用 Tweepy 库自动发布推文的示例:

import tweepy

def tweet(message):
    consumer_key = 'your_consumer_key'
    consumer_secret = 'your_consumer_secret'
    access_token = 'your_access_token'
    access_token_secret = 'your_access_token_secret'

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    api = tweepy.API(auth)

    api.update_status(message)
    print("Tweet sent successfully!")

tweet("Hello, world!")

这个脚本会在你的 Twitter 账号上发布一条内容为“Hello, world!”的推文。

8. 自动化发票生成

如果你经常需要生成发票,可以通过 Fpdf 等库来自动化这一工作,生成 PDF 格式的发票。

from fpdf import FPDF

def create_invoice(client_name, amount):
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    pdf.cell(20010, txt="Invoice", ln=True, align='C')
    pdf.cell(20010, txt=f"Client: {client_name}", ln=True, align='L')
    pdf.cell(20010, txt=f"Amount: ${amount}", ln=True, align='L')
    pdf.output(f"{client_name}_invoice.pdf")
    print(f"Invoice for {client_name} created successfully!")

create_invoice('John Doe'500)

这个脚本生成一份简单的发票,并将其保存为 PDF 格式。

9. 网站正常运行时间监控

利用 Python 的 requests 库,可以自动化地监控网站的正常运行时间,定期检测网站是否处于在线状态:

import requests
import time

def check_website(url):
    try:
        response = requests.get(url)
        if response.status_code == 200:
            print(f"Website {url} is up!")
        else:
            print(f"Website {url} returned a status code {response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"Error checking website {url}{e}")

url = 'https://example.com' while True: check_website(url) time.sleep(3600# Check every hour

这个脚本会检测网站是否能够访问,并输出其状态码。

10. 电子邮件自动回复

如果你经常收到邮件并希望建立自动回复机制,可以利用 imaplibsmtplib 这两个库来实现对邮件的自动回复功能:

import imaplib
import smtplib
from email.mime.text import MIMEText

def auto_reply():
    # Connect to email server
    mail = imaplib.IMAP4_SSL("imap.gmail.com")
    mail.login('youremail@gmail.com''yourpassword')
    mail.select('inbox')

    # Search for unread emails
    status, emails = mail.search(None'UNSEEN')

    if status == "OK":
        for email_id in emails[0].split():
            status, email_data = mail.fetch(email_id, '(RFC822)')
            email_msg = email_data[0][1].decode('utf-8')

            # Send auto-reply
            send_email("Auto-reply""Thank you for your email. I'll get back to you soon."'sender@example.com')

def send_email(subject, body, to_email):
    sender_email = 'youremail@gmail.com'
    sender_password = 'yourpassword'
    receiver_email = to_email

    msg = MIMEText(body)
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject

    with smtplib.SMTP_SSL('smtp.gmail.com'465as server:
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())

auto_reply()

这个脚本会对未读邮件自动发送预设的回复信息。

Reference
[1]

Source: https://www.tecmint.com/python-automation-scripts/

本文由 mdnice 多平台发布

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

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

相关文章

【Python网络爬虫笔记】6- 网络爬虫中的Requests库

一、概述 Requests 是一个用 Python 语言编写的、简洁且功能强大的 HTTP 库。它允许开发者方便地发送各种 HTTP 请求,如 GET、POST、PUT、DELETE 等,并且可以轻松地处理请求的响应。这个库在 Python 生态系统中被广泛使用,无论是简单的网页数…

网站维护记录

服务器重启,网站打不开:chown -R manager:manager /run/php-fpm/www.sock wordpress升级需设置ftp: // 设置权限0777 //define("FS_METHOD", "direct"); //define("FS_CHMOD_DIR", 0777); //define("…

利用Python爬虫精准获得Amazon商品详情数据

在大数据时代,精准的数据获取是电商分析、市场研究和竞争情报收集的关键。Amazon作为全球最大的电商平台之一,其商品详情页面蕴含着丰富的信息。本文将详细介绍如何使用Python爬虫技术精准获取Amazon商品详情数据,并提供实用的代码示例。 1. …

AIGC开始进军网络微短剧!AI会成为影视赛道的新风口吗?

“部分AI元素微短剧更像是一系列炫丽的幻灯片堆砌,技术驱动下的华丽和动感,难以掩盖其作品在内容深度和人文关怀上的缺失,AI微短剧警惕沦为空洞的视觉糖衣。”日前,有专家一针见血地指出。 当下,影视行业正经历着一场…

Kruskal 算法在特定边权重条件下的性能分析及其实现

引言 Kruskal 算法是一种用于求解最小生成树(Minimum Spanning Tree, MST)的经典算法。它通过逐步添加权重最小的边来构建最小生成树,同时确保不会形成环路。在本文中,我们将探讨在特定边权重条件下 Kruskal 算法的性能,并分别给出伪代码和 C 语言实现。特别是,我们将分…

MySQL初学之旅(5)详解查询

目录 1.前言 2.正文 2.1聚合查询 2.1.1count() 2.1.2sum() 2.1.3avg() 2.1.4max() 2.1.5min() 2.1.6总结 2.2分组查询 2.2.1group by字句 2.2.2having字句 2.2.3group by与having的关系 2.3联合查询 2.3.1笛卡尔积 2.3.2内连接 2.3.3外连接 2.3.4自连接 2.3…

【WPS】【EXCEL】将单元格中字符按照分隔符拆分按行填充到其他单元格

问题:实现如下图的效果 解答: 一、函数 IFERROR(TRIM(MID(SUBSTITUTE($A$2,",",REPT(" ",LEN($A$2))),(ROW(A1)-1)*LEN($A$2)1,LEN($A$2))),"") 二、在单元格C2中填写如下函数 三、全选要填充的单元格并且按CTRLD 函数…

WPF+LibVLC开发播放器-进度条显示和拖动控制

进度条显示和拖动控制 视频教程界面上代码实现进度条显示进度进度条拖动视频进度 效果 视频教程 WPFLibVLC开发播放器-进度条控制 界面上 界面上线增加一个Slider控件&#xff0c;当做播放进度条 <SliderName"PlaySlider"Grid.Row"1"Width"800&qu…

可供参考的GitHub国内镜像

在配置了本地hosts文件和魔法后仍存在无法访问的问题 针对如上问题&#xff0c;可以使用国内的镜像地址做替换 例如: https://github.com/bubbliiiing/detr-pytorch改成 https://hub.nuaa.cf/bubbliiiing/detr-pytorch推荐使用的镜像 https://hub.yzuu.cf/ https://hub.nua…

Docker--Docker Registry(镜像仓库)

什么是Docker Registry&#xff1f; 镜像仓库&#xff08;Docker Registry&#xff09;是Docker生态系统中用于存储、管理和分发Docker镜像的关键组件。 镜像仓库主要负责存储Docker镜像&#xff0c;这些镜像包含了应用程序及其相关的依赖项和配置&#xff0c;是构建和运行Doc…

TDesign:Button按钮

Button 按钮 文档地址 view TDButton(text: 确认支付, // 按钮文案isBlock: true, // 是否时Blockwidth:345.w, // 自定义宽度height: 43.w, // 自定义高度padding: EdgeInsets.all(0), // 默认的paddingmargin: EdgeInsets.all(0), // 默认的margin// 文案左侧图标&#xff0c…

DR.KNOWS:医疗图谱UMLS + 图神经网络 + LLM 模拟医生的诊断推理过程, 从症状出发找到可能的诊断结果

DR.KNOWS&#xff1a;医疗图谱UMLS 图神经网络 LLM 模拟医生的诊断推理过程, 从症状出发找到可能的诊断结果 理解要点解法拆解全流程分析图神经网络的训练论文大纲核心模式真实应用中&#xff0c;为什么说俩跳推理过于简化&#xff1f; 论文&#xff1a;Leveraging A Medical…

【Maven系列】深入解析 Maven 镜像配置

前言 Maven 是一个流行的 Java 项目管理和构建工具&#xff0c;可以自动化构建项目、管理依赖、生成报告等。在Maven构建项目时&#xff0c;通常经常需要下载各种依赖。默认情况下&#xff0c;Maven 会从中央仓库下载这些依赖&#xff0c;但在某些情况下&#xff0c;这个过程可…

从智能合约到去中心化AI:Web3的技术蓝图

Web3正在成为互联网发展的重要方向&#xff0c;其核心理念是去中心化、用户主权和自治。随着区块链技术、智能合约以及人工智能&#xff08;AI&#xff09;等技术的发展&#xff0c;Web3不仅重新定义了数据存储和交易方式&#xff0c;还为更智能化、去中心化的数字生态系统铺平…

A1228 php+Mysql旅游供需平台的设计与实现 导游接单 旅游订单 旅游分享网站 thinkphp框架 源码 配置 文档 全套资料

旅游供需平台 1.项目描述2. 开发背景与意义3.项目功能4.界面展示5.源码获取 1.项目描述 随着社会经济的快速发展&#xff0c;生活水平的提高&#xff0c;人们对旅游的需求日益增强&#xff0c;因此&#xff0c;为给用户提供一个便利的查看导游信息&#xff0c;进行导游招募的平…

魔改版kali分享(新增50多种渗透工具)

网盘链接 我用夸克网盘分享了「Kali Linux 定制化魔改系统」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan.quark.cn/s/dda56f7e3431 提取码&#xff1a;…

Java项目实战II基于微信小程序的电子竞技信息交流平台的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网技术的飞速发展…

GPT 1到4代的演进笔记

1. GPT-1 标题是 Improving Language Understanding by Generative Pre-Training. 发表于 2018.02, 比 bert(发布于 2018.10) 早了半年. 1.1 动机 困难:NLU 任务是多样的, 有 {textual entailment, question answering, semantic similarity assessment, document classifica…

linux-安全-iptables防火墙基础笔记

目录 一、 iptables链结构 五链 二、 iptables表结构 四表 三、 匹配流程 四、 语法 五、 匹配 1. 通用匹配 2. 隐含匹配 3. 显示匹配 六、 SNAT 七、 DNAT 八、 规则备份及还原 1. 备份 2. 还原 这篇将讲解iptables防火墙的基础知识 一、 iptables链结构 规则…

TCP/IP 协议图--计算机网络体系结构分层

计算机网络体系结构分层 计算机网络体系结构分层 不难看出&#xff0c;TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”&#xff0c;而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”