page contents

这几个Python代码,几分钟能搞定工作速度

真正消耗人的往往不是大任务,而是那些「明明几分钟能搞定、但每次都要现找工具」的零碎活。这一篇收的六个脚本,正好填这些缝:视频太大要压、动图要截、发图前想抹掉定位、想定时提醒、顺手看看哪个端口开着、新建项目想一键把目录搭好。每一个都不复杂,但凑齐了能省下不少来回切换的工夫。

attachments-2026-08-8ujTZnly6a88fef771f8e.png

真正消耗人的往往不是大任务,而是那些「明明几分钟能搞定、但每次都要现找工具」的零碎活。这一篇收的六个脚本,正好填这些缝:视频太大要压、动图要截、发图前想抹掉定位、想定时提醒、顺手看看哪个端口开着、新建项目想一键把目录搭好。每一个都不复杂,但凑齐了能省下不少来回切换的工夫。

1. 视频压缩瘦身

手机拍的视频动辄几百兆,发人发平台都嫌大。用 moviepy 按码率重压一遍,体积能小一大圈,画质损失在可接受范围。

(需 pip install moviepy,并安装 ffmpeg)

from moviepy.editor import VideoFileClip

def compress(inp, out, bitrate="1000k"):
    clip = VideoFileClip(inp)
    clip.write_videofile(out, bitrate=bitrate,
                         codec="libx264", audio_codec="aac")
    clip.close()

# compress("raw.mp4", "small.mp4", bitrate="800k")

小提示:bitrate 越小文件越小、画质越糊,800k~1500k 是常用区间;竖屏长视频还可以先 clip.resize(height=720) 再压,体积会再降一截。

2. 视频转 GIF 动图

要把一段操作演示做成动图发出去,不用开剪辑软件,截取其中几秒转成 GIF 即可。

(需 pip install moviepy + ffmpeg)

from moviepy.editor import VideoFileClip

def to_gif(inp, out="out.gif", start=0, end=5, width=480):
    clip = VideoFileClip(inp).subclip(start, end).resize(width=width)
    clip.write_gif(out, fps=12)
    clip.close()

# to_gif("demo.mp4", start=2, end=6)

小提示:GIF 体积对时长和尺寸很敏感,建议控制在 3~6 秒、宽度 480 以内;fps 降到 10 左右肉眼差别不大,文件却能小不少。

3. 发图前清除定位等隐私信息

照片里藏着拍摄时间、设备、 GPS 定位这类元数据,直接发出去等于把行踪也带出去了。重新编码一遍就能把这些元数据抹掉。

(需 pip install pillow)

from PIL import Image
import os

def clear_meta(src, dst):
    im = Image.open(src).convert("RGB")
    im.save(dst)              # 重新编码,不写入任何元数据

os.makedirs("clean", exist_ok=True)
for n in os.listdir("photos"):
    if n.lower().endswith((".jpg", ".png")):
        clear_meta(f"photos/{n}", f"clean/{n}")

小提示:重新保存会丢元数据、也有极轻微画质损失,换来的是定位和设备信息彻底清除;对外发图、尤其是含位置的照片,先过这一道更稳妥。

4. 终端倒计时提醒

煮个面、做个二十五分钟专注,想有个不看手机也能盯着的提醒,终端里跑个倒计时就行,零依赖。

(标准库,无需安装)

import time, sys

def countdown(seconds):
    while seconds:
        m, s = divmod(seconds, 60)
        sys.stdout.write(f"\r 剩余 {m:02d}:{s:02d}")
        sys.stdout.flush()
        time.sleep(1)
        seconds -= 1
    print("\r 时间到!")

# countdown(1500)   # 25 分钟

小提示:\r 是把光标移回行首,配合 flush 就能在同一行刷新,形成跳动的数字;想更醒目可以在结束时加一声响铃或弹窗。

5. 端口连通性自查

本地起了服务,想知道某个端口到底开没开、是不是被占了,用 socket 探一下最快,零依赖。

(标准库,无需安装)

import socket

def scan(host, ports=(80, 443, 8080)):
    for p in ports:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(0.5)
        ok = sock.connect_ex((host, p)) == 0
        print(f"{host}:{p}  {'开放' if ok else '关闭'}")
        sock.close()

# scan("127.0.0.1")

小提示:只对自己有权限的主机做这类检查;settimeout 设小一点避免卡住,端口范围一大就会比较慢,按需缩小列表即可。

6. 一键生成项目目录骨架

每开一个新项目都要手动建一堆文件夹,写一次骨架模板,以后新建项目一条命令搞定。

(标准库,无需安装)

import os

def scaffold(base, struct):
    for path in struct:
        os.makedirs(os.path.join(base, path), exist_ok=True)
    print("目录骨架已生成:", base)

skeleton = [
    "src", "src/utils", "tests",
    "docs", "data/raw", "data/out",
]
scaffold("my_project", skeleton)

小提示:exist_ok=True 保证重复运行不报错;把 skeleton 换成你自己的常用结构(比如加上 assets、logs),新建任何工程都能直接复用。

这六个脚本覆盖的是「多媒体处理、隐私、提醒、网络自查、工程初始化」几类零碎需求。它们单个都不起眼,但放在一起,刚好把日常里那些「下次再说」的小事,变成了敲一下就完的事。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

  • 发表于 2026-08-22 09:44
  • 阅读 ( 51 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2420 篇文章

作家榜 »

  1. Pack 2420 文章
  2. 轩辕小不懂 2403 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 216 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章