Python

My Python Examples

Python

项目简介

geekcomputers/Python 是一个专注于 Python 实用脚本的开源项目,由开发者 Craig Lotter 创建并维护。截至目前,该项目已获得超过 35,000 颗 Star 和 12,000 次 Fork,是 GitHub 上最受欢迎的 Python 学习资源仓库之一。

这个仓库的核心理念体现在项目创建者的自我描述中:"我并不认为自己是程序员,我创建这些小程序是为了探索 Python 或解决实际问题。"这种态度让整个项目呈现出一种独特的风格——不追求复杂的架构设计,而是用简洁直接的代码解决真实问题。对于 Python 初学者而言,这里是观察"如何用 Python 思考问题"的绝佳窗口;对于有经验的开发者,这里则提供了大量可直接复用的实用工具脚本。

仓库中的每一个脚本都围绕一个具体的任务设计,从批量重命名文件到下载 YouTube 视频,从扫描局域网地址到检查服务器健康状态。这些脚本覆盖了文件系统操作、网络编程、系统管理、网页爬取、多媒体处理等多个领域,能够帮助学习者快速建立起"Python 能做什么"的直观认知。

核心功能与架构

系统管理类脚本

系统管理是仓库中占比最大的一类脚本,这些工具直接面向日常运维和自动化需求。

folder_size.py 是笔者最推荐入门的脚本之一。它能够递归扫描当前目录及其所有子目录,并计算出每个层级的磁盘占用情况。当你需要清理磁盘空间但又不知道哪些文件夹占用最多时,这个脚本能让你一目了然:

# 核心逻辑示例
import os

def calculate_folder_size(path):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(path):
        for filename in filenames:
            filepath = os.path.join(dirpath, filename)
            if os.path.exists(filepath):
                total_size += os.path.getsize(filepath)
    return total_size

env_check.py 则是运维人员的得力助手。它会检查系统中所有必需的环境变量是否已正确设置,这在部署应用或切换开发环境时尤为实用。osinfo.py 脚本则专注于收集操作系统信息,包括内核版本、平台类型、Python 版本等,方便生成环境诊断报告。

dir_test.pycreate_dir_if_not_there.py 这两个脚本处理的是看似简单但频繁出现的需求——确保指定目录存在。前者用于测试并创建测试目录,后者则提供了更通用的目录创建逻辑。

网络工具类脚本

网络相关的脚本展现了 Python 在系统管理和监控方面的强大能力。

ping_servers.py 允许你按应用组批量 ping 服务器,快速判断哪些机器可达。这比手动一条条输入命令高效得多,尤其在管理大量服务器时。ping_subnet.py 则更进一步,它可以扫描指定 IP 子网的整个网段,找出哪些地址当前可用——这对网络规划和新服务器部署前的地址预检非常有价值。

nslookup_check.py 从文件 server_list.txt 读取服务器列表,自动执行 DNS 查询并返回解析结果。配合前面的 ping 脚本,你可以快速完成服务器连通性的完整诊断。site_health.py 则将关注点从网络层转向应用层,它检查远程服务器的健康状态,包括响应时间、HTTP 状态码等指标。

change_mac.py 是一个较有技术深度的脚本,它能在 Linux 系统上修改 MAC 地址或生成随机 MAC 地址。这在网络安全测试和隐私保护场景中非常有用。

媒体娱乐类脚本

仓库中的媒体类脚本展示了 Python 在多媒体处理方面的应用。

youtubedownloader.py 提供了多线程下载 YouTube 视频的能力,使用 aria2c 作为下载引擎,效率远高于单线程方式。youtube.py 则是另一种思路——输入歌曲名称,自动搜索并播放最佳匹配的 YouTube 视频。xkcd_downloader.py 专门用于下载 XKCD 漫画,会自动创建 comics 文件夹并保存最新一期漫画。

Google_Image_Downloader 模块能够根据关键词从 Google 图片搜索结果中批量下载图片。这在需要大量图片数据集进行机器学习或创意工作时特别有帮助。

值得注意的是,whatsapp-monitor.py 使用 Selenium 模拟浏览器操作,实现了在终端监控 WhatsApp 联系人的在线状态。虽然这不是推荐的使用方式(WhatsApp 对自动化操作有严格限制),但它展示了如何用 Python 控制浏览器完成复杂任务的技术思路。

日常工具类脚本

还有许多脚本服务于日常办公和文件处理需求。

batch_file_rename.py 能够批量重命名指定目录中的文件,支持批量修改扩展名。当你有一批从相机导出的照片需要统一重命名时,这个脚本能节省大量手动操作时间。move_files_over_x_days.py 则实现了按文件修改时间自动归档的功能——将超过指定天数的文件从源目录移动到目标目录,非常适合日志文件的定期清理。

logs.py 专门处理日志文件,它会查找指定目录下的所有 .log 文件,用时间戳命名后压缩归档。puttylogs.py 则针对 PuTTY 日志进行了优化。这些脚本组合起来,可以构建起完整的日志管理流程。

fileinfo.py 提供详细的文件元信息,包括大小、创建时间、修改时间、权限等。script_count.py 扫描脚本目录并统计各类脚本的数量,适合需要管理大量脚本文件的技术团队。

快速上手

环境准备

在开始使用这些脚本之前,需要确保本地已安装 Python 环境。建议使用 Python 3.6 或更高版本,可通过以下命令检查:

python3 --version

部分脚本需要额外的第三方库支持,可以使用 pip 进行安装:

pip install requests beautifulsoup4 selenium

对于需要系统级操作的脚本(如更改 MAC 地址),可能需要以管理员/root 权限运行。

克隆仓库

获取全部脚本的最简单方式是克隆整个仓库:

git clone https://github.com/geekcomputers/Python.git
cd Python

克隆完成后,所有脚本文件都在当前目录中,可以直接运行或按需复制使用。

运行第一个脚本

让我们以 folder_size.py 为例,体验脚本的运行方式:

python3 folder_size.py

这个脚本会分析当前目录的磁盘占用情况。假设你的下载文件夹积累了大量文件,运行后会看到类似以下的输出:

扫描目录: /home/user/Downloads
/../Downloads: 45.23 GB
/../Downloads/images: 12.10 GB
/../Downloads/videos: 28.50 GB
/../Downloads/documents: 4.63 GB

如果想扫描其他目录,可以修改脚本中的目标路径,或在命令行传入参数(取决于脚本是否支持参数解析)。

运行 YouTube 下载器

使用 youtubedownloader.py 需要先安装必要的依赖:

pip install pytube
# 或安装 aria2
sudo apt install aria2  # Ubuntu/Debian
brew install aria2       # macOS

然后运行脚本:

python3 youtubedownloader.py "视频URL"

脚本会启动多线程下载,显著提升下载速度。

Python 环境配置示意

使用场景

场景一:开发者的文件整理助手

作为开发者,你可能经常需要整理项目文件。smart_file_organizer.py 能够根据文件类型自动将混乱的下载文件夹整理成结构化的子文件夹——图片归入 Images 目录、文档归入 Documents、视频归入 Videos 等。这比手动拖拽高效得多,而且可以设置定时任务实现自动化。

场景二:运维人员的服务器监控

运维团队可以用 ping_servers.py 配合 nslookup_check.py 构建轻量级的服务器监控脚本。每天上班前运行一次,快速确认所有服务器是否在线、DNS 解析是否正常。如果发现问题,立即触发告警通知。

场景三:内容创作者的素材收集

需要收集某主题的参考资料图片时,Google_Image_Downloader 可以批量获取图片。相比手动一张张保存,这个工具能在几分钟内完成数百张图片的收集。

场景四:Python 学习者的实践教材

对于刚入门 Python 的学习者,这个仓库的价值不仅在于使用现成脚本,更在于阅读源码学习编程思路。每个脚本都针对一个具体问题,通过阅读代码可以学习到文件操作、网络请求、正则表达式、命令行参数解析等核心知识。

脚本执行效果示意

注意事项

权限与系统兼容性

部分脚本涉及系统级操作,需要特别注意权限问题。例如 change_mac.py 在 Linux 上修改 MAC 地址需要 root 权限,应使用 sudo 运行。在 Windows 或 macOS 上运行时,部分功能可能不可用或需要管理员权限。建议在虚拟机或测试环境中先行验证。

第三方服务限制

使用 youtubedownloader.pyGoogle_Image_Downloader 时,需要注意目标平台的使用条款和服务限制。YouTube 等平台对自动化下载行为有明确的政策约束,违规使用可能导致账号被封禁。这些工具仅适合个人学习和合法用途。

依赖版本兼容性

Python 生态变化较快,部分脚本创建于数年前,依赖的第三方库可能已更新版本。如果遇到导入错误或运行时异常,首先检查是否是版本兼容问题。可以通过创建虚拟环境来隔离不同项目的依赖:

python3 -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt

代码安全性

虽然这个仓库的脚本都是开源的,但在运行前仍建议审查代码内容,特别是涉及网络请求、文件操作或系统配置的脚本。避免运行来源不明的脚本,即使是从可信仓库下载的,也要理解每行代码的作用后再执行。

总结

geekcomputers/Python 是一个难得的资源宝库,它用最朴素的方式展示了 Python 的实用价值——不是炫技式的框架设计,而是脚踏实地的解决问题。35,000 多颗 Star 证明了这些脚本的实用性和受欢迎程度。

对于初学者,这个仓库是极好的学习范本。每个脚本都足够短小,可以在一小时内完全理解;又足够完整,解决了真实世界的问题。通过阅读和模仿这些代码,你可以快速建立起"Python 能做什么"的认知框架。

对于有经验的开发者,这些脚本提供了可直接复用的解决方案,省去从零开发的时间成本。特别是系统管理和网络监控类的工具,经过简单修改就能适配到你的工作环境中。

更重要的是,这个项目体现了开源社区的核心精神——分享知识、共同进步。作者 Craig Lotter 明确表示欢迎任何人提出改进建议,这种开放的态度让这个仓库持续进化、保持活力。

建议的学习路径是:先从最简单的 dir_test.py 开始,理解基本结构;然后尝试修改 folder_size.py 让它支持命令行参数;最后挑战需要网络请求或浏览器自动化的脚本,如 youtube.py。循序渐进,你会在这个过程中真正感受到 Python 的魅力。

项目信息

项目
仓库 geekcomputers/Python
语言 Python
Star 35,049
Fork 12,927
主页 http://www.thegeekblog.co.uk

参考链接