20个Python编程脚本,让你拥有超能力

开发 前端
你是否有时看着硬盘突然发现:为什么只剩下100MB空间了?偷偷占用空间多数就是重复文件。以下是一个查找并删除它们的脚本,让我们释放你的空间。

当你已经用Python编程一段时间,或许对StackOverflow也变得熟悉,可能就会想要一些脚本来提升你的编程水平。本文将介绍20个实用的Python脚本,它们不仅能帮你在同事中脱颖而出,还能自动化那些看似不可能的任务,甚至解决你未曾意识到的问题。我们不只讨论基本的抓取或HTTP请求,而是更深入的内容。让我们开始探索吧!

目录

  1. 文件重复查找器(拯救你的硬盘空间)
  2. 自动整理下载文件夹(拯救文件夹混乱)
  3. 批量调整图像大小(只需几秒,图片就好)
  4. 实时天气通知器(再也不用被雨淋了)
  5. 邮件推送Reddit新帖子(Reddit上瘾梦)
  6. 网页转换电子书(离线访问必备)
  7. 将文本转换为语音(旁白模式,已激活)
  8. 检查网站可用性(为网站管理员而生)
  9. 跟踪加密货币价格(因为 HODL)
  10. 下载完成后关闭你的电脑(因为等待无聊)
  11. 为你的脚本设置密码保护(保持代码安全)
  12. 监控计算机的CPU使用率(保持冷静,真的很冷)
  13. 将PDFs转换为文本(为了图书管理)
  14. 生成二维码(以便不时之需)
  15. 下载YouTube视频(再见了,所有的广告)
  16. 创建随机强密码(别让密码太好猜)
  17. 获取实时股票价格(为投资者而生)
  18. 创建简单聊天机器人(你好,再见)
  19. 每日步数跟踪(保持健康)
  20. 创建待办事项列表(生产力是关键)

1. 文件重复查找器(拯救你的硬盘空间)

你是否有时看着硬盘突然发现:为什么只剩下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的空间。

2. 自动整理下载文件夹(拯救文件夹混乱)

我们都知道那种感觉:有一天,你的下载文件夹看起来就像龙卷风过后的景象。这里有一个脚本可以整齐地整理一切。

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

3. 批量调整图像大小(只需几秒,图片就好)

在处理需要调整图像大小的项目吗?以下是轻松批量调整图像大小的方法。

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分钟内,我要这些图片都整整齐齐"的时候,它就是你的最佳选择。

4. 实时天气通知器(再也不用被雨淋了)

实时获取最新天气预报,再也不用淋雨大步跑,以下脚本非常好。

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更换至本地天气预报网站即可。

5. 邮件推送Reddit新帖子(Reddit上瘾梦)

如果你对某个特定的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 分钟。自动化这个过程可以节省你很多时间。

6.  网页转换电子书(离线访问必备)

这个脚本将你喜欢的文章转换为电子书格式,非常适合离线阅读。

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', '我的电子书')

7. 将文本转换为语音(旁白模式,已激活)

想要倾听代码输出的声音?这个脚本将打开你的耳朵。

import pyttsx3

def text_to_speech(text):
    engine = pyttsx3.init()
    engine.say(text)
    engine.runAndWait()

text_to_speech('Hello World, Python is amazing!')

提示: 听输出可以捕捉错误或让自己从阅读中解脱出来。

8. 检查网站可用性(为网站管理员而生)

想知道你的网站是否宕机?这里有一个简单的脚本可以为你检查。

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个小时之前,你会感谢这个脚本的。

9. 跟踪加密货币价格(因为 HODL)

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

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

10. 下载完成后关闭你的电脑(因为等待无聊)

让你的电脑自己处理。这段脚本在下载完成时关闭你的电脑

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()

现在你可以点击“下载”,走开,等你回来时,电脑已经关机。

11. 为你的脚本设置密码保护(保持代码安全)

这里有一个有趣的脚本:给你的脚本设置密码保护,以便没有权限的人无法运行它们。

import getpass

password = getpass.getpass('输入你的密码: ')
if password != 'secret':
    print('访问被拒绝')
    exit()
else:
    print('访问授权')
    # 在这里放置你的受保护代码

12. 监控CPU使用率(保持冷静,真的很冷)

用下面的脚本监控你的CPU温度和使用情况。

import psutil

def monitor_cpu():
    print(f"CPU 使用率: {psutil.cpu_percent()}%")
    print(f"内存使用率: {psutil.virtual_memory().percent}%")

monitor_cpu()

因为过热从来都不是一件好事。

13. 将PDFs转换为文本(为了图书管理)

如果你经常处理 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'))

现在你可以轻松提取重要信息,而不需要无尽的复制粘贴。

14. 生成二维码(以便不时之需)

为任何 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')

谁知道生成二维码竟然这么简单?

15. 下载YouTube视频(再见了,所有广告)

在几秒钟内下载你最喜欢的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')

请记住不要侵权下载使用哦。

16. 创建随机强密码(别让密码太好猜)

使用这个脚本生成强随机密码。

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))

请放弃弱密码的使用。

17. 获取实时股票价格(为投资者而生)

使用这个快速脚本跟踪实时股票价格。

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

在不打开浏览器的情况下检查你的投资组合。

18. 创建简单聊天机器人(你好,再见)

制作你自己的聊天机器人。

import random

def chatbot():
    responses = ['你好!', '我能帮你什么?', '再见!']
    while True:
        user_input = input("你: ")
        if user_input.lower() == 'bye':
            print("聊天机器人: 再见!")
            break
        print(f"聊天机器人: {random.choice(responses)}")

chatbot()

仅用几行代码创建的个人助手。

19. 每日步数跟踪(保持健康)

在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不能帮助你保持健康?

20. 创建待办事项列表(生产力是关键)

一个简单的待办事项列表,因为我们都需要一些秩序。

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学研大本营
相关推荐

2015-03-13 11:23:21

编程编程超能力编程能力

2011-02-22 17:48:34

Konqueror

2024-08-21 15:20:57

2023-11-12 23:01:44

PaddleOCR深度学习

2013-03-11 13:35:26

腕带

2020-11-03 20:44:35

快手实时隐身技术隐身超能力

2019-02-28 22:10:30

AI人工智能预测

2021-03-11 11:00:38

IBM自动化AI

2024-03-14 08:28:45

2022-03-09 16:19:11

人工智能科技超能力

2021-08-03 21:24:13

ARVR

2023-12-22 14:31:52

2017-08-22 11:06:22

Android谷歌

2024-05-15 16:07:03

Python框架

2013-12-02 10:30:29

浏览器

2019-03-28 09:26:26

数据科学模型机器学习

2016-12-01 09:32:47

AWS re:InveAWS云计算超能力

2020-08-16 08:30:33

PythonExcel集成

2022-01-06 15:35:31

LinuxWindows英特尔

2019-05-08 14:19:19

贝斯平BespinMSP
点赞
收藏

51CTO技术栈公众号