相见恨晚的20个Python脚本,让你化身计算机超人,拥有无限超能力!
当你已经用Python编程一段时间,或许对StackOverflow也变得熟悉,可能就会想要一些脚本来提升你的编程水平。本文将介绍20个实用的Python脚本,它们不仅能帮你在同事中脱颖而出,还能自动化那些看似不可能的任务,甚至解决你未曾意识到的问题。我们不只讨论基本的抓取或HTTP请求,而是更深入的内容。让我们开始探索吧!
你是否有时看着硬盘突然发现:为什么只剩下100MB空间了?偷偷占用空间多数就是重复文件。以下是一个查找并删除它们的脚本,让我们释放你的空间。
import os
import hashlib
def hash_file(filename):
h = hashlib.md5()
with open(filename, 'rb') as file:
while chunk := file.read(8192):
h.update(chunk)
return h.hexdigest()
def find_duplicates(folder):
hashes = {}
for dirpath, _, filenames in os.walk(folder):
for f in filenames:
full_path = os.path.join(dirpath, f)
file_hash = hash_file(full_path)
if file_hash in hashes:
print(f"发现重复文件: {full_path} == {hashes[file_hash]}")
else:
hashes[file_hash] = full_path
find_duplicates('/path/to/your/folder')
提示: 不要在系统文件夹上盲目运行这个脚本,除非你想引入一些混乱。
笔者曾在运行这个脚本后,在不到10分钟的时间内释放了10GB的空间。
我们都知道那种感觉:有一天,你的下载文件夹看起来就像龙卷风过后的景象。这里有一个脚本可以整齐地整理一切。
import os
import shutil
def organize_folder(folder):
file_types = {
'图片': ['.jpeg', '.jpg', '.png', '.gif'],
'视频': ['.mp4', '.avi', '.mov'],
'文档': ['.pdf', '.docx', '.txt'],
'压缩包': ['.zip', '.rar']
}
for filename in os.listdir(folder):
file_path = os.path.join(folder, filename)
if os.path.isfile(file_path):
ext = os.path.splitext(filename)[1].lower()
for folder_name, extensions in file_types.items():
if ext in extensions:
target_folder = os.path.join(folder, folder_name)
os.makedirs(target_folder, exist_ok=True)
shutil.move(file_path, os.path.join(target_folder, filename))
print(f'将 {filename} 移动到 {folder_name}')
organize_folder('/path/to/Downloads')
在处理需要调整图像大小的项目吗?以下是轻松批量调整图像大小的方法。
from PIL import Image
import os
def batch_resize(folder, width, height):
for filename in os.listdir(folder):
if filename.endswith(('.jpeg', '.jpg', '.png')):
img = Image.open(os.path.join(folder, filename))
img = img.resize((width, height))
img.save(os.path.join(folder, f"resized_{filename}"))
print(f'调整了 {filename} 的大小')
batch_resize('/path/to/images', 800, 600)
当你的老板希望 "5分钟内,我要这些图片都整整齐齐"的时候,它就是你的最佳选择。
实时获取最新天气预报,再也不用淋雨大步跑,以下脚本非常好。
import requests
import time
API_KEY = 'your_api_key'
CITY = 'New York'
def get_weather():
url = f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}"
response = requests.get(url)
data = response.json()
return data['weather'][0]['description'], data['main']['temp'] - 273.15
while True:
weather, temp = get_weather()
print(f"Current weather in {CITY}: {weather}, {temp:.2f}°C")
time.sleep(3600) # Run every hour
示例脚本可以获取纽约气候,想要获取本地天气将url更换至本地天气预报网站即可。
如果你对某个特定的subreddit非常着迷,但又不想经常查看,这里有一个 Python 脚本,可以将最新的帖子直接发送到你的收件箱。
import smtplib
import requests
def send_email(subject, body):
from_addr = 'your_email@example.com'
to_addr = 'your_email@example.com'
msg = f"主题: {subject}\n\n{body}"
with smtplib.SMTP('smtp.gmail.com', 587) as server:
server.starttls()
server.login('your_email@example.com', 'your_password')
server.sendmail(from_addr, to_addr, msg)
def get_reddit_posts(subreddit):
url = f"https://www.reddit.com/r/{subreddit}/new.json"
headers = {'User-agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
data = response.json()
return [post['data']['title'] for post in data['data']['children']]
posts = get_reddit_posts('python')
send_email('最新 Reddit 帖子', '\n'.join(posts))
有趣的事实: 普通 Reddit 用户每次访问网站的平均时间为 16 分钟。自动化这个过程可以节省你很多时间。
这个脚本将你喜欢的文章转换为电子书格式,非常适合离线阅读。
import requests
from bs4 import BeautifulSoup
from ebooklib import epub
def create_ebook(url, book_title):
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
book = epub.EpubBook()
book.set_title(book_title)
chapter = epub.EpubHtml(title='章节 1', file_name='chap_01.xhtml')
chapter.content = soup.prettify()
book.add_item(chapter)
book.spine = ['nav', chapter]
epub.write_epub(f'{book_title}.epub', book, {})
create_ebook('https://example.com/your-favorite-article', '我的电子书')
想要倾听代码输出的声音?这个脚本将打开你的耳朵。
import pyttsx3
def text_to_speech(text):
engine = pyttsx3.init()
engine.say(text)
engine.runAndWait()
text_to_speech('Hello World, Python is amazing!')
提示: 听输出可以捕捉错误或让自己从阅读中解脱出来。
想知道你的网站是否宕机?这里有一个简单的脚本可以为你检查。
import requests
def is_website_online(url):
try:
response = requests.get(url)
return response.status_code == 200
except:
return False
print(is_website_online('https://example.com'))
在某天醒来发现网站已经瘫痪了4个小时之前,你会感谢这个脚本的。
不要错过下一个下跌或上涨。使用这个脚本跟踪你最喜欢的加密货币价格。
import requests
def get_crypto_price(crypto):
url = f"https://api.coindesk.com/v1/bpi/currentprice/{crypto}.json"
response = requests.get(url)
data = response.json()
return data['bpi']['USD']['rate']
print(get_crypto_price('BTC'))
让你的电脑自己处理。这段脚本在下载完成时关闭你的电脑
import os
import time
def check_downloads():
while True:
if not os.listdir('/path/to/downloads'):
print("正在关闭...")
os.system("shutdown /s /t 1")
time.sleep(60)
check_downloads()
现在你可以点击“下载”,走开,等你回来时,电脑已经关机。
这里有一个有趣的脚本:给你的脚本设置密码保护,以便没有权限的人无法运行它们。
import getpass
password = getpass.getpass('输入你的密码: ')
if password != 'secret':
print('访问被拒绝')
exit()
else:
print('访问授权')
# 在这里放置你的受保护代码
用下面的脚本监控你的CPU温度和使用情况。
import psutil
def monitor_cpu():
print(f"CPU 使用率: {psutil.cpu_percent()}%")
print(f"内存使用率: {psutil.virtual_memory().percent}%")
monitor_cpu()
因为过热从来都不是一件好事。
如果你经常处理 PDF,这个脚本会为你提取文本。
import PyPDF2
def pdf_to_text(pdf_file):
reader = PyPDF2.PdfReader(pdf_file)
text = ''
for page in reader.pages:
text += page.extract_text()
return text
print(pdf_to_text('example.pdf'))
现在你可以轻松提取重要信息,而不需要无尽的复制粘贴。
为任何 URL 或文本创建一个二维码。
import qrcode
def generate_qr(text, filename):
img = qrcode.make(text)
img.save(f"{filename}.png")
generate_qr('https://example.com', 'my_qr_code')
谁知道生成二维码竟然这么简单?
在几秒钟内下载你最喜欢的YouTube视频。
from pytube import YouTube
def download_video(url):
yt = YouTube(url)
yt.streams.get_highest_resolution().download()
download_video('https://www.youtube.com/watch?v=your_favorite_video')
请记住不要侵权下载使用哦。
使用这个脚本生成强随机密码。
import string
import random
def generate_password(length):
chars = string.ascii_letters + string.digits + string.punctuation
return ''.join(random.choice(chars) for _ in range(length))
print(generate_password(16))
请放弃弱密码的使用。
使用这个快速脚本跟踪实时股票价格。
import requests
def get_stock_price(symbol):
url = f"https://finnhub.io/api/v1/quote?symbol={symbol}&token=your_api_key"
response = requests.get(url)
data = response.json()
return data['c']
print(get_stock_price('AAPL'))
在不打开浏览器的情况下检查你的投资组合。
制作你自己的聊天机器人。
import random
def chatbot():
responses = ['你好!', '我能帮你什么?', '再见!']
while True:
user_input = input("你: ")
if user_input.lower() == 'bye':
print("聊天机器人: 再见!")
break
print(f"聊天机器人: {random.choice(responses)}")
chatbot()
仅用几行代码创建的个人助手。
在Python中获取你的步数。
import fitbit
def get_daily_steps(token):
client = fitbit.Fitbit('client_id', 'client_secret', oauth2_token=token)
steps = client.activities()['summary']['steps']
return steps
print(f"今天的步数: {get_daily_steps('your_token')}")
谁说Python不能帮助你保持健康?
一个简单的待办事项列表,因为我们都需要一些秩序。
import json
def add_task(task):
with open('todo.json', 'r+') as file:
tasks = json.load(file)
tasks.append(task)
file.seek(0)
json.dump(tasks, file)
add_task('发布 Medium 文章')
以毕达哥拉斯的方式,保持对事物的关注。
《Python从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分27章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、文件及目录操作、操作数据库、使用进程和线程、网络编程、异常处理及程序调试、Pygame游戏编程、推箱子游戏、网络爬虫开发、火车票分析助手、数据可视化、京东电商销售数据分析与预测、Web编程、Flask框架、e起去旅行网站、Python自动化办公、AI图像识别工具等内容。书中所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。
【6折促销中】购买链接:https://item.jd.com/14055900.html