相见恨晚的20个Python脚本,让你化身计算机超人,拥有无限超能力!
当你已经用Python编程一段时间,或许对StackOverflow也变得熟悉,可能就会想要一些脚本来提升你的编程水平。本文将介绍20个实用的Python脚本,它们不仅能帮你在同事中脱颖而出,还能自动化那些看似不可能的任务,甚至解决你未曾意识到的问题。我们不只讨论基本的抓取或HTTP请求,而是更深入的内容。让我们开始探索吧!
目录 1. 文件重复查找器(拯救你的硬盘空间) 你是否有时看着硬盘突然发现:为什么只剩下100MB空间了?偷偷占用空间多数就是重复文件。以下是一个查找并删除它们的脚本,让我们释放你的空间。
import osimport hashlibdef 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的空间。
2. 自动整理下载文件夹(拯救文件夹混乱) 我们都知道那种感觉:有一天,你的下载文件夹看起来就像龙卷风过后的景象。这里有一个脚本可以整齐地整理一切。
import osimport shutildef 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' )
3. 批量调整图像大小(只需几秒,图片就好)
在处理需要调整图像大小的项目吗?以下是轻松批量调整图像大小的方法。
from PIL import Imageimport osdef 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分钟内,我要这些图片都整整齐齐"的时候,它就是你的最佳选择。
4. 实时天气通知器(再也不用被雨淋了) 实时获取最新天气预报,再也不用淋雨大步跑,以下脚本非常好。
import requestsimport 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:.2 f} °C" ) time.sleep(3600 ) # Run every hour
示例脚本可以获取纽约气候,想要获取本地天气将url更换至本地天气预报网站即可。
5. 邮件推送Reddit新帖子(Reddit上瘾梦) 如果你对某个特定的subreddit非常着迷,但又不想经常查看,这里有一个 Python 脚本,可以将最新的帖子直接发送到你的收件箱。
import smtplibimport requestsdef 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 分钟。自动化这个过程可以节省你很多时间。
6. 网页转换电子书(离线访问必备) 这个脚本将你喜欢的文章转换为电子书格式,非常适合离线阅读。
import requestsfrom bs4 import BeautifulSoupfrom ebooklib import epubdef 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' , '我的电子书' )
7. 将文本转换为语音(旁白模式,已激活) 想要倾听代码输出的声音?这个脚本将打开你的耳朵。
import pyttsx3def text_to_speech (text) : engine = pyttsx3.init() engine.say(text) engine.runAndWait() text_to_speech('Hello World, Python is amazing!' )
提示: 听输出可以捕捉错误或让自己从阅读中解脱出来。
8. 检查网站可用性(为网站管理员而生) 想知道你的网站是否宕机?这里有一个简单的脚本可以为你检查。
import requestsdef 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个小时之前,你会感谢这个脚本的。
9. 跟踪加密货币价格(因为 HODL) 不要错过下一个下跌或上涨。使用这个脚本跟踪你最喜欢的加密货币价格。
import requestsdef 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' ))
10. 下载完成后关闭你的电脑(因为等待无聊) 让你的电脑自己处理。这段脚本在下载完成时关闭你的电脑
import osimport timedef check_downloads () : while True : if not os.listdir('/path/to/downloads' ): print("正在关闭..." ) os.system("shutdown /s /t 1" ) time.sleep(60 ) check_downloads()
现在你可以点击“下载”,走开,等你回来时,电脑已经关机。
11. 为你的脚本设置密码保护(保持代码安全) 这里有一个有趣的脚本:给你的脚本设置密码保护,以便没有权限的人无法运行它们。
import getpass password = getpass.getpass('输入你的密码: ' )if password != 'secret' : print('访问被拒绝' ) exit()else : print('访问授权' ) # 在这里放置你的受保护代码
12. 监控CPU使用率(保持冷静,真的很冷) 用下面的脚本监控你的CPU温度和使用情况。
import psutildef monitor_cpu () : print(f"CPU 使用率: {psutil.cpu_percent()} %" ) print(f"内存使用率: {psutil.virtual_memory().percent} %" ) monitor_cpu()
因为过热从来都不是一件好事。
13. 将PDFs转换为文本(为了图书管理) 如果你经常处理 PDF,这个脚本会为你提取文本。
import PyPDF2def 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' ))
现在你可以轻松提取重要信息,而不需要无尽的复制粘贴。
14. 生成二维码(以便不时之需) 为任何 URL 或文本创建一个二维码。
import qrcodedef generate_qr (text, filename) : img = qrcode.make(text) img.save(f"{filename} .png" ) generate_qr('https://example.com' , 'my_qr_code' )
谁知道生成二维码竟然这么简单?
15. 下载YouTube视频(再见了,所有广告) 在几秒钟内下载你最喜欢的YouTube视频。
from pytube import YouTubedef download_video (url) : yt = YouTube(url) yt.streams.get_highest_resolution().download() download_video('https://www.youtube.com/watch?v=your_favorite_video' )
请记住不要侵权下载使用哦。
16. 创建随机强密码(别让密码太好猜) 使用这个脚本生成强随机密码。
import stringimport randomdef generate_password (length) : chars = string.ascii_letters + string.digits + string.punctuation return '' .join(random.choice(chars) for _ in range(length)) print(generate_password(16 ))
请放弃弱密码的使用。
17. 获取实时股票价格(为投资者而生) 使用这个快速脚本跟踪实时股票价格。
import requestsdef 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' ))
在不打开浏览器的情况下检查你的投资组合。
18. 创建简单聊天机器人(你好,再见) 制作你自己的聊天机器人。
import randomdef chatbot () : responses = ['你好!' , '我能帮你什么?' , '再见!' ] while True : user_input = input("你: " ) if user_input.lower() == 'bye' : print("聊天机器人: 再见!" ) break print(f"聊天机器人: {random.choice(responses)} " ) chatbot()
仅用几行代码创建的个人助手。
19. 每日步数跟踪(保持健康)
在Python中获取你的步数。
import fitbitdef 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不能帮助你保持健康?
20. 创建待办事项列表(生产力是关键) 一个简单的待办事项列表,因为我们都需要一些秩序。
import jsondef 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从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分27章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、文件及目录操作、操作数据库、使用进程和线程、网络编程、异常处理及程序调试、Pygame游戏编程、推箱子游戏、网络爬虫开发、火车票分析助手、数据可视化、京东电商销售数据分析与预测、Web编程、Flask框架、e起去旅行网站、Python自动化办公、AI图像识别工具等内容。书中所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。
【6折促销中】 购买链接:https://item.jd.com/14055900.html
请备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“加群。
( 也可以加入机器学习交流qq群772479961 )