十個(gè)Python編程腳本,超能力再升級(jí)
Python因其易讀性和簡(jiǎn)潔的語(yǔ)法,非常適合編程新手。想要提升你的Python技能嗎?本文精選了10個(gè)有趣的腳本,提升你的編程超能力,讓我們一起開(kāi)始學(xué)習(xí)吧!
目錄
- 自動(dòng)整理文件和文件夾
- 自動(dòng)刪除舊文件
- 批量調(diào)整圖片大小
- 密碼生成器
- 自動(dòng)退訂
- 圖片水印
- 定時(shí)發(fā)送郵件
- 隨機(jī)維基百科文章
- 網(wǎng)站屏蔽器
- 發(fā)送WhatsApp消息
1. 自動(dòng)整理文件和文件夾
手動(dòng)整理文件和文件夾可能很繁瑣。這個(gè)Python腳本可以自動(dòng)根據(jù)文件擴(kuò)展名將文件分類(lèi)到對(duì)應(yīng)的文件夾。
import os
import shutil
# 要整理的文件夾
folder = '/path/to/folder/'
# 文件擴(kuò)展名和對(duì)應(yīng)的文件夾名稱(chēng)
extensions = {
'Images': ['jpg', 'jpeg', 'png', 'svg'],
'Documents': ['doc', 'docx', 'pdf', 'xls', 'ppt', 'txt'],
'Video': ['mov', 'mp4', 'avi', 'wmv'],
'Audio': ['wav', 'mp3']
}
# 遍歷文件夾中的項(xiàng)目
for item in os.listdir(folder):
filename, extension = os.path.splitext(item)
# 如果是文件,將其移動(dòng)到對(duì)應(yīng)的文件夾
if extension:
for folder_name, ext_list in extensions.items():
if extension[1:] in ext_list:
folder_path = os.path.join(folder, folder_name)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
shutil.move(os.path.join(folder, item), folder_path)
閑時(shí)記得運(yùn)行它,文件整理頂呱呱!
2. 自動(dòng)刪除舊文件
累積的舊文件會(huì)占用硬盤(pán)空間。這個(gè)腳本會(huì)刪除超過(guò)指定年齡的文件。
import os
import shutil
import datetime
# 要清理的文件夾
folder = '/path/to/folder'
# 修改日期早于此日期的文件將被刪除
days = 30
seconds = days * 24 * 60 * 60
min_date = datetime.datetime.now() - datetime.timedelta(seconds=seconds)
for root, dirs, files in os.walk(folder):
for file in files:
file_path = os.path.join(root, file)
modified = os.path.getmtime(file_path)
if modified < min_date.timestamp():
print(f'Deleting old file: {file_path}')
os.remove(file_path)
設(shè)置days變量以自動(dòng)清理舊文件。
3. 批量調(diào)整圖片大小
手動(dòng)調(diào)整大量圖片的大小很耗時(shí)。這個(gè)腳本可以調(diào)整文件夾中所有圖片的大小。
from PIL import Image
import os
# 包含要調(diào)整大小的圖片的文件夾
folder = '/path/to/folder'
# 期望的圖片尺寸
size = (800, 600)
for img in os.listdir(folder):
if img.endswith(('jpg', 'jpeg', 'png')):
path = os.path.join(folder, img)
image = Image.open(path)
image_resized = image.resize(size)
image_resized.save(path)
print('Images resized successfully!')
只需設(shè)置期望的大小并運(yùn)行,即可輕松批量調(diào)整圖片大小。
4. 密碼生成器
需要一些獨(dú)特的安全密碼?不妨試試下面的安全密碼隨機(jī)生成法。
import random
import string
length=12 #密碼長(zhǎng)度
# 可選字符列表
lower=string.ascii_lowercase
upper=string.ascii_uppercase
num=string.digits
symbols=string.punctuation
# 合并所有字符集
all=lower+upper+num+symbols
# 使用random創(chuàng)建密碼
password = ''.join(random.sample(all,length))
print(password)
fetchone()方法獲取結(jié)果集的一行。
5. 自動(dòng)退訂
收到電子郵件垃圾郵件很煩人。這個(gè)腳本可以從文本文件中的所有郵件列表中退訂。
import smtplib
from email.mime.text import MIMEText
# 要退訂的電子郵件列表
unsub_emails = open('unsub_list.txt').readlines()
for email in unsub_emails:
msg = MIMEText('Unsubscribe')
msg['Subject'] = 'Unsubscribe'
msg['From'] = 'you@email.com'
msg['To'] = email
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
print(f'Unsubscribed from {email}')
6. 圖片水印
給圖片添加水印可以保護(hù)您的作品。這個(gè)腳本可以為文件夾中的所有圖片添加水印。
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
img_folder = '/path/to/folder'
watermark_text = 'Your Watermark'
# 加載字體
font = ImageFont.truetype('arial.ttf', 50)
for img in os.listdir(img_folder):
if img.endswith(('.jpg','.jpeg')):
path = os.path.join(img_folder, img)
image = Image.open(path)
# 使圖片可編輯
drawing = ImageDraw.Draw(image)
# 獲取文本大小
text_size = drawing.textsize(watermark_text, font)
# 設(shè)置位置
position = image.size[0] - text_size[0], image.size[1] - text_size[1]
# 添加水印
drawing.text(position, watermark_text, (255,255,255), font=font)
# 保存加水印的圖片
image.save(path)
print('Added watermarks to all images!')
自定義水印文本和字體樣式/大小以滿足您自己的水印需求。
7. 定時(shí)發(fā)送郵件
提前寫(xiě)好郵件并安排發(fā)送時(shí)間非常方便。這個(gè)腳本正是這樣做的。
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
import datetime as dt
# 郵件詳情
sender = 'you@email.com'
recipients = ['recipient@email.com']
msg = MIMEText('Body')
msg['Subject'] = 'Scheduled Email'
msg['From'] = sender
msg['To'] = ', '.join(recipients)
# 安排明天發(fā)送
send_date = dt.datetime.now().date() + dt.timedelta(days=1)
msg['Date'] = formatdate(int(send_date.timestamp()))
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
print('Email scheduled for tomorrow!')
只需調(diào)整send_date即可安排稍后發(fā)送郵件。
8. 隨機(jī)維基百科文章
這個(gè)腳本會(huì)在您的瀏覽器中打開(kāi)一個(gè)隨機(jī)的維基百科文章。
import requests
import webbrowser
api_url = 'https://en.wikipedia.org/api/rest_v1/page/random/summary'
response = requests.get(api_url)
data = response.json()
random_title = data['title']
random_page = 'https://en.wikipedia.org/wiki/' + random_title
print('Opening random Wikipedia page:')
print(random_page)
webbrowser.open(random_page)
9. 網(wǎng)站屏蔽器
一些網(wǎng)站在工作時(shí)可能會(huì)分散注意力。這個(gè)腳本可以在設(shè)定的時(shí)間內(nèi)屏蔽網(wǎng)站。
import time
from datetime import datetime as dt
hosts_path = r"/etc/hosts"
redirect = "127.0.0.1"
# 要屏蔽的網(wǎng)站列表
websites = ["www.facebook.com","facebook.com"]
start_time = dt(2023, 11, 10, 8, 0, 0)
end_time = dt(2023, 11, 10, 16, 0, 0)
while True:
if start_time < dt.now() < end_time:
print("Working hours...")
with open(hosts_path, 'r+') as file:
content = file.read()
for site in websites:
if site not in content:
file.write(redirect + " " + site + "\n")
else:
print("Free time...")
with open(hosts_path, 'r+') as file:
content = file.readlines()
file.seek(0)
for line in content:
if not any(site in line for site in websites):
file.write(line)
file.truncate()
time.sleep(5)
此腳本可以在您配置的工作時(shí)間內(nèi)屏蔽和取消屏蔽網(wǎng)站,以實(shí)現(xiàn)無(wú)干擾的生產(chǎn)力。
10. 發(fā)送WhatsApp消息
直接從Python發(fā)送WhatsApp消息?是的,這是可能的!這個(gè)腳本可以發(fā)送WhatsApp消息。
from twilio.rest import Client
# 您的Twilio憑證
account_sid = 'ACxxxxxxxxx'
auth_token = 'xxxxxxxxxx'
client = Client(account_sid, auth_token)
# 消息詳情
from_whatsapp = 'whatsapp:+14155238886'
to_whatsapp = 'whatsapp:+447123456789'
body = 'Hello from Python!'
message = client.messages.create(
from_=from_whatsapp,
body=body,
to=to_whatsapp
)
print(message.sid)
方便用于通過(guò)WhatsApp直接發(fā)送通知或警報(bào)。