十个Python自动化脚本,日常工作更轻松

开发 前端
你是否有过需要为网站或社交媒体优化图像,但又不想打开Photoshop的情况?现在只需一个简单的Python脚本,在强大的Pillow模块的帮助下,你可以轻松完成图片的调整大小、裁剪、锐化等多种操作,非常简单省力。

Python 在自动化领域的表现堪称一流,其强大的自动化能力能够大幅简化开发者的日常工作。

本文精选了10个Python脚本,帮助你轻松自动化日常工作流程,提升效率。

1 图像优化器:告别Photoshop

你是否有过需要为网站或社交媒体优化图像,但又不想打开Photoshop的情况?现在只需一个简单的Python脚本,在强大的Pillow模块的帮助下,你可以轻松完成图片的调整大小、裁剪、锐化等多种操作,非常简单省力。

下面的脚本展示了如何进行裁剪、调整大小、翻转、旋转、调节对比度、模糊、锐化以及滤镜处理。

# 图像优化
from PIL import Image, ImageFilter, ImageOps, ImageEnhance

# 加载图像
im = Image.open("Image1.jpg")

# 裁剪图像
im = im.crop((34, 23, 100, 100))

# 调整图像大小
im = im.resize((50, 50))

# 水平翻转图像
im = im.transpose(Image.FLIP_LEFT_RIGHT)

# 旋转图像360度
im = im.rotate(360)

# 压缩图像
im.save("Image1.jpg", optimize=True, quality=90)

# 应用模糊效果
im = im.filter(ImageFilter.BLUR)

# 应用锐化效果
im = im.filter(ImageFilter.SHARPEN)

# 调整亮度
enhancer = ImageEnhance.Brightness(im)
im = enhancer.enhance(1.5)

# 调整对比度
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(1.5)

# 添加滤镜
im = ImageOps.grayscale(im)
im = ImageOps.invert(im)
im = ImageOps.posterize(im, 4)

# 保存优化后的图像
im.save("Image1.jpg")

2 视频优化器:打造专业级视频

这个视频优化器具备了所有基础功能,比如剪辑、变速,以及通过MoviePy库提供的一系列炫酷特效。

# 视频优化
import moviepy.editor as pyedit

# 加载视频
video = pyedit.VideoFileClip("vid.mp4")

# 修剪视频
vid1 = video.subclip(0, 10)
vid2 = video.subclip(20, 40)
final_vid = pyedit.concatenate_videoclips([vid1, vid2])

# 加速视频
final_vid = final_vid.speedx(2)

# 给视频添加音频
aud = pyedit.AudioFileClip("bg.mp3")
final_vid = final_vid.set_audio(aud)

# 反转视频
final_vid = final_vid.fx(pyedit.vfx.time_mirror)

# 合并两个视频
vid1 = pyedit.VideoFileClip("vid1.mp4")
vid2 = pyedit.VideoFileClip("vid2.mp4")
final_vid = pyedit.concatenate_videoclips([vid1, vid2])

# 给视频添加VFX
vid1 = final_vid.fx(pyedit.vfx.mirror_x)
vid2 = final_vid.fx(pyedit.vfx.invert_colors)
final_vid = pyedit.concatenate_videoclips([vid1, vid2])

# 给视频添加图片
img1 = pyedit.ImageClip("img1.jpg")
img2 = pyedit.ImageClip("img2.jpg")
final_vid = pyedit.concatenate_videoclips([img1, img2])

# 保存最终视频
final_vid.write_videofile("final.mp4")

3 邮件定时器:精准掌控邮件发送

这个邮件定时器能够让你设定特定时间自动发送邮件,确保你不会错过任何重要邮件。它利用smtplib来发送邮件,并通过schedule库来安排邮件的发送时间。

# 邮件定时器
import smtplib
import schedule
import time
def send_email():
    sender_email = "your_email@gmail.com"
    receiver_email = "recipient_email@gmail.com"
    password = "your_email_password"
    subject = "Automated Email"
    body = "This is an automated email sent using Python."
    message = f"Subject: {subject}\n\n{body}"
    with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, message)
        
# 安排邮件在每天上午8点发送
schedule.every().day.at("08:00").do(send_email)
while True:
    schedule.run_pending()
    time.sleep(1)

4 社交媒体自动发布器:轻松管理多平台发帖

这个Python自动化脚本不仅能帮你在各个平台上发布内容,还能轻松调整发帖的时间间隔。

# 社交媒体自动发布器
import tweepy
import schedule
import time
def post_to_twitter():
    api_key = "YOUR_API_KEY"
    api_secret = "YOUR_API_SECRET"
    access_token = "YOUR_ACCESS_TOKEN"
    access_token_secret = "YOUR_ACCESS_TOKEN_SECRET"
    auth = tweepy.OAuthHandler(api_key, api_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = tweepy.API(auth)
    tweet = "This is an automated tweet using Python!"
    api.update_status(tweet)
    
# 安排每6小时发布一次推文
schedule.every(6).hours.do(post_to_twitter)
while True:
    schedule.run_pending()
    time.sleep(1)

5 将PDF转换为图像:无需复杂软件

PDF文件虽然方便,但有时候我们需要将其转换成图像。无论是处理扫描文档还是为演示文稿提取图片,PyMuPDF都能帮你轻松实现。只需几行代码,就能将PDF页面转换成高质量的图像,简单又高效。

# PDF转图像
import fitz
def pdf_to_images(pdf_file):
    doc = fitz.open(pdf_file)
    for page in doc:
        pix = page.get_pixmap()
        output = f"page{page.number}.png"
        pix.writePNG(output)
pdf_to_images("test.pdf")

6 获取API数据:简化数据获取

API无处不在,但手动提取数据是一件苦差事。这个脚本使用获取API数据脚本自动化从Web API获取数据。提取天气、股票价格、GitHub仓库——你说出来。这个脚本使用urllib3处理GET和POST请求。

# 获取API数据
import urllib3

# 使用GET请求获取API数据
url = "https://api.github.com/users/psf/repos"
http = urllib3.PoolManager()
response = http.request('GET', url)
print("Status Code:", response.status)
print("Response Data:", response.data)

# 使用POST请求发布API数据
url = "https://httpbin.org/post"
http = urllib3.PoolManager()
response = http.request('POST', url, fields={'hello': 'world'})
print("Status Code:", response.status)

7 电池监控:时刻警惕电量变化

电池指示灯脚本会密切关注你的电池,在需要插入电源时提醒你充电。使用plyer和psutil,这个脚本确保你永远不会错过低电池警报。

# 电池提醒器
from plyer import notification
import psutil
from time import sleep
while True:
    battery = psutil.sensors_battery()
    life = battery.percent
    if life < 50:
        notification.notify(
            title="Battery Low",
            message="Please connect to a power source",
            timeout=10
        )
    sleep(50)

8 网络爬虫:挖掘网络宝藏

网络爬虫无疑是个强大的工具,但手动一页页浏览网页就太费时费力了。这个脚本自动为你抓取和提取网页上的数据,利用requests和BeautifulSoup库,帮你省去了数小时浏览工作、新闻或产品信息的麻烦。

# 网络爬虫脚本
import requests
from bs4 import BeautifulSoup
url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 从网站提取特定数据
data = soup.find("div", {"class": "content"}).get_text()
print(data)

9 Pytest:自动化测试,确保代码质量

自动化测试彻底改变了软件开发的游戏规则。Pytest让你能够迅速编写并执行Python代码的测试,确保一切功能都符合预期。这个脚本能够自动对函数进行测试,并检查你的代码是否存在缺陷。

# 使用Pytest进行自动化测试
import pytest

# 要测试的函数
def add_numbers(x, y):
    return x + y
    
# 函数的测试用例
def test_addition():
    assert add_numbers(1, 2) == 3    assert add_numbers(-1, 1) == 0
    assert add_numbers(0, 0) == 0
    assert add_numbers(10, 5) == 15
if __name__ == "__main__":
    pytest.main()

10 文件备份和同步:确保文件安全

这个脚本将启用两个文件夹之间的文件备份和同步。任何一个文档的任何修改都会自动更新到第二个文件夹。非常适合保持备份或在多个设备上工作。

# 文件备份和同步脚本
import os
import shutil
def backup_and_sync(source_folder, backup_folder):
    for root, _, files in os.walk(source_folder):
        for file in files:
            source_path = os.path.join(root, file)
            backup_path = os.path.join(backup_folder, root.replace(source_folder, ""), file)
            # 如果备份文件夹中不存在目录,则创建目录
            os.makedirs(os.path.dirname(backup_path), exist_ok=True)
            # 将文件复制到备份文件夹
            shutil.copy2(source_path, backup_path)
    # 删除备份文件夹中不在源文件夹中的文件
    for root, _, files in os.walk(backup_folder):
        for file in files:
            backup_path = os.path.join(root, file)
            source_path = os.path.join(source_folder, root.replace(backup_folder, ""), file)
            if not os.path.exists(source_path):
                os.remove(backup_path)
source_folder = "path/to/source/folder"
backup_folder = "path/to/backup/folder"
backup_and_sync(source_folder, backup_folder)
责任编辑:武晓燕 来源: Python学研大本营
相关推荐

2024-07-01 18:07:30

Python脚本自动化

2024-08-14 14:42:00

2024-06-21 10:46:44

2022-10-09 14:50:44

Python脚本

2024-10-28 19:36:05

2024-12-10 07:15:00

2022-05-07 14:08:42

Python自动化脚本

2022-09-22 07:00:31

PC手机存储

2022-07-27 08:01:28

自动化DevOps

2021-04-23 22:44:57

Python开发办公自动化

2024-08-19 10:21:37

接口Python魔法方法

2022-07-05 14:00:49

编排工具自动化

2024-05-13 16:29:56

Python自动化

2022-01-11 06:53:23

脚本编码Python

2019-05-06 14:12:41

人工智能AI自动化

2024-08-16 21:14:36

2024-11-13 13:14:38

2022-02-17 13:03:28

Python脚本代码

2024-08-16 21:51:42

2024-11-11 16:55:54

点赞
收藏

51CTO技术栈公众号