十個 Python 腳本,來自動化完成日常任務(wù),提升工作效率
Python憑借其簡潔的語法和強(qiáng)大的庫,堪稱創(chuàng)建自動化腳本的最佳編程語言之一。無論你是程序員還是想簡化日常工作的普通用戶,Python都能提供得力的工具。
批量重命名文件
逐個重命名文件耗時費(fèi)力,而使用Python的 os 模塊可以輕松實現(xiàn)自動化。
import os
path = "your_folder_path"
for i, filename in enumerate(os.listdir(path)):
os.rename(os.path.join(path, filename), os.path.join(path, f"file_{i+1}.txt"))
定時任務(wù)
定時任務(wù)自動化可以輕松通過 schedule 庫實現(xiàn),它能在指定時間自動執(zhí)行發(fā)送郵件、運(yùn)行備份腳本等操作:
pip install schedule
import schedule
import time
def job():
print("Task running...")
schedule.every(10).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
郵件發(fā)送
如果需要定期發(fā)送郵件報告,可以使用 smtplib 庫實現(xiàn)自動化。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
msg = MIMEMultipart()
msg["From"] = "you@example.com"
msg["To"] = "recipient@example.com"
msg["Subject"] = "Daily Report"
# 添加正文
msg.attach(MIMEText("See attached report", "plain"))
# 添加附件
with open("report.pdf", "rb") as f:
attach = MIMEApplication(f.read(), _subtype="pdf")
attach.add_header("Content-Disposition", "attachment", filename="report.pdf")
msg.attach(attach)
# 發(fā)送郵件
with smtplib.SMTP("smtp.example.com", 587) as server:
server.starttls()
server.login("user", "password")
server.send_message(msg)
任務(wù)追蹤/提醒系統(tǒng)
利用 Python 的 datetime 和 asyncio 模塊,可以輕松構(gòu)建任務(wù)追蹤與定時提醒功能。
import asyncio
from datetime import datetime
asyncdef task_reminder(task_name, interval):
whileTrue:
print(f"Reminder: {task_name} - {datetime.now()}")
await asyncio.sleep(interval)
asyncdef main():
await asyncio.gather(
task_reminder("Drink Water", 7200), # Remind every 2 hours
task_reminder("Take a Break", 3600) # Remind every 1 hour
)
asyncio.run(main())
批量下載網(wǎng)絡(luò)文件
通過requests庫,獲取遠(yuǎn)程 http資源,并下載到本地。
import requests
urls = ["http://example.com/file1.pdf", "http://example.com/file2.pdf"]
for url in urls:
response = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(response.content)
監(jiān)控網(wǎng)站正常運(yùn)行時間
利用 requests 庫,我們可以輕松實現(xiàn)網(wǎng)站運(yùn)行狀態(tài)的自動化監(jiān)控,定時檢測目標(biāo)網(wǎng)站是否在線。
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'
whileTrue:
check_website(url)
time.sleep(3600)
操作word文件
通過 python-docx庫,自動生成Word文檔。
from docx import Document
names = ["Alice", "Bob", "Charlie"]
for name in names:
doc = Document()
doc.add_heading(f"Contract for {name}", 0)
doc.add_paragraph("Agreement details...")
doc.save(f"contract_{name}.docx")
操作Excel文件
使用 openpyxlpandas 庫就能輕松實現(xiàn)Excel的自動化操作。
import pandas as pd
df = pd.read_excel("data.xlsx")
groups = df.groupby("Category")
with pd.ExcelWriter("split.xlsx") as writer:
for name, group in groups:
group.to_excel(writer, sheet_name=name)
操作PDF文件
通過PyPDF2能夠輕松實現(xiàn)pdf的內(nèi)容提取,合并、拆分等操作。
from PyPDF2 import PdfReader, PdfWriter
reader = PdfReader("original.pdf")
watermark = PdfReader("watermark.pdf").pages[0]
writer = PdfWriter()
for page in reader.pages:
page.merge_page(watermark)
writer.add_page(page)
with open("watermarked.pdf", "wb") as f:
writer.write(f)
批量生成二維碼
通過 qrcode 和 Pillow 庫實現(xiàn)批量生成二維碼。
import qrcode
import os
from PIL import Image
def generate_qr_code(data, save_path, version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4):
"""
生成二維碼
參數(shù):
data: 二維碼數(shù)據(jù)
save_path: 保存路徑
version: 二維碼版本(控制二維碼的大小,版本1到40)
error_correction: 錯誤糾正級別
box_size: 每個二維碼像素的大小
border: 二維碼邊框的大小
"""
qr = qrcode.QRCode(
version=version,
error_correction=error_correction,
box_size=box_size,
border=border,
)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save(save_path)
def batch_generate_qr_codes(data_list, output_dir, prefix="qr_"):
"""
批量生成二維碼
參數(shù):
data_list: 二維碼數(shù)據(jù)列表
output_dir: 輸出目錄
prefix: 文件名前綴
"""
# 創(chuàng)建輸出目錄(如果不存在)
ifnot os.path.exists(output_dir):
os.makedirs(output_dir)
for index, data in enumerate(data_list):
# 生成二維碼
filename = f"{prefix}{index + 1}.png"
save_path = os.path.join(output_dir, filename)
generate_qr_code(data, save_path)
print(f"已生成: {save_path}")
if __name__ == "__main__":
# 配置參數(shù)
output_directory = "qr_codes"# 輸出目錄
data_list = [
"https://www.example.com",
"This is a sample QR code 1",
"This is a sample QR code 2",
"This is a sample QR code 3",
"This is a sample QR code 4",
] # 需要生成的二維碼數(shù)據(jù)
# 批量生成二維碼
batch_generate_qr_codes(data_list, output_directory)
print("批量生成二維碼完成!")
關(guān)鍵庫推薦
- pandas:Excel/CSV數(shù)據(jù)處理
- openpyxl:Excel高級操作
- python-docx:Word文檔處理
- PyPDF2 / pdfplumber:PDF操作
- smtplib / imaplib:郵件自動化
- requests / BeautifulSoup:網(wǎng)絡(luò)操作
- schedule:定時任務(wù)
- qrcode / Pillow : 二維碼及圖片操作