当前位置: 首页 > news >正文

20个Python自动化脚本,提升编程能力

大家好,使用Python编程一段时间后,或许对StackOverflow也变得熟悉,可能就会想要一些脚本来提升编程水平。本文将介绍20个实用的Python脚本,它们不仅能帮助提升能力,还能自动化那些看似不可能的任务,甚至解决未曾意识到的问题。

1.文件重复查找器

有时看着硬盘突然发现,只剩下一点点空间了,偷偷占用空间多数就是重复文件。以下是一个查找重复文件并将其删除的脚本,进而释放磁盘空间。

import os
import 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_pathfind_duplicates('/path/to/your/folder')

不要在系统文件夹上盲目运行这个脚本,否则会引入一些混乱。在运行这个脚本后短时间内就会释放大量空间。

2.自动整理下载文件夹

如果下载文件夹十分混乱,影响正常的工作,这里有一个脚本可以自动整理文件:

import os
import 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 Image
import 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 requests
import timeAPI_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.15while True:weather, temp = get_weather()print(f"Current weather in {CITY}: {weather}, {temp:.2f}°C")time.sleep(3600)  # Run every hour

示例脚本可以获取纽约气候,想要获取本地天气将url更换至本地天气预报网站即可。

5.邮件推送Reddit新帖子

如果对某个特定的subreddit非常着迷,但又不想经常查看,这里有一个 Python 脚本,可以将最新的帖子直接发送到你的收件箱。

import smtplib
import 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 requests
from bs4 import BeautifulSoup
from 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 == 200except:return Falseprint(is_website_online('https://example.com'))

9.跟踪加密货币价格

不要错过下一个下跌或上涨,使用这个脚本跟踪喜欢的加密货币价格:

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 os
import 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 getpasspassword = 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 textprint(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 string
import randomdef generate_password(length):chars = string.ascii_letters + string.digits + string.punctuationreturn ''.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("聊天机器人: 再见!")breakprint(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 stepsprint(f"今天的步数: {get_daily_steps('your_token')}")

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 文章')

http://www.mrgr.cn/news/70648.html

相关文章:

  • python 对文件中重复的特定字符串进行替换,仅保留第4n处,输出指定文件中(本文的解决方案,即python代码,通过 文心一言的文心大模型直接生成)
  • 【微服务实战之Docker容器】第七章-Dockerfile解析
  • 【Swift】字符串和字符
  • 代理池搭建优化-(书接上回,优化改进)
  • 什么是UGFC?模块电脑(核心板)规范标准简介四
  • 【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
  • 图形几何之美系列:仿射变换矩阵之先转后偏
  • 元岭村停车场的收费情况探寻
  • C#-objetc中的方法
  • mysql数据库(四)单表查询
  • 20241111_室内定位
  • 把握鸿蒙生态崛起的机遇:开发者视角的探讨
  • 应用系统开发(4)CMOS 模拟开关芯片HCF4053BE
  • CS144_01
  • 快手推出可灵AI独立APP,视频美学表达和运动表现持续领先
  • tiktok 用户主页接口API服务
  • 【Vue3】基础语法案例
  • Unity学习笔记(3):场景绘制和叠层设置 Tilemap
  • CCI3.0-HQ:用于预训练大型语言模型的高质量大规模中文数据集
  • 剖析源码,带你看懂JUC线程池运行机制
  • [ Linux 命令基础 2 ] Linux 命令详解-系统管理命令
  • Qt | QMediaPlayer+QGraphicsVideoItem视频播放器
  • 无线局域网四种类型
  • 图论算法:最短路径算法详解【c语言版】(无权最短路径、Dijkstra算法)
  • Mysql 基础语法
  • Java API类与接口:类的转换方法与正则表达式