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)