🐍
学Python 3年了,你能自己安装pip库,会写 print("Hello World"),知道什么是变量、for循环、函数
然后呢
然后就没有然后了
让你写一个真正能用的东西——比如批量处理文件、自动抓取网页数据、做个天气查询小工具——你发现大脑一片空白, руки根本不知道从哪里下手
是不是这种感觉
我告诉你,这不是你不够努力
这是90%Python学习者都会掉进的坑——你学的不是Python,你学的是一种叫「自欺欺人的满足感」的东西
你是不是也这样?
来看看下面这些场景,如果我说的是你,那就往下继续看:
**你是不是酱紫的
**
每天下班回家学Python,看教程视频,看完一章,成就感满满——「今天又学了一节」
然后点开下一集,继续刷
刷了50集,发现除了知道些概念,脑子里什么都没留下
你收藏了50G的Python教程,保存了100篇「Python入门到精通」,关注了20个Python公众号,觉得自己拥有了整个知识库
但让你自己写一个计算器,你写不出来
你跟着教程抄代码,抄得可开心了,运行时「哇成功了
」然后把代码一关,该干嘛干嘛
第二天全忘了
让你换个需求,你就不会了
你觉得自己还年轻,慢慢学呗
但眨眼一年过去了,你还是只会 print Hello World
别人问你「Python学到什么程度了」,你答不上来
如果你中了1条及以上,恭喜你——你正在「假学习」
认知反转:你不是学不会,你是「会」的姿势不对
我要告诉你一个反常识的观点:
**Python不是学会的,是做会的
**
你看教程、看视频、抄代码——这些行为让你的大脑产生了「我学了」的幻觉
但实际上,你的脑子只是短暂地「见」过这些知识,根本没有「记住」,更别谈「会用」
认知科学告诉我们:被动接收信息和主动输出知识,是两码事
你看100个游泳教学视频,下水还是个旱鸭子
你听100个做菜教程,进厨房还是只会煮泡面
你学100小时Python教程,让你写个项目你还是傻眼
原因很简单:看教程是「输入」,写项目是「输出」
输入和输出之间,隔着一条鸿沟
而跨越这条鸿沟的唯一方法,就是——
**直接开干
**
不要等「学完」Python再去做项目
正确的姿势是:边做项目,边学Python
核心技术部分:3个真实项目,从0到1
接下来我要给你3个完整可运行的Python项目代码
不是那种3行的Hello World,是真的能跑、真的有用、真的能让你体会到「做项目是什么感觉」的真实代码
每个项目15-30行,包含逐行解释
你可以直接复制运行
项目一:豆瓣电影Top250数据爬虫
你想不想批量获取豆瓣高分电影的信息
片名、评分、链接
这个脚本帮你做到
import requests # 发送HTTP请求的库
from bs4 import BeautifulSoup # 解析HTML的库
import csv # 处理CSV文件的库
# 第一步:目标URL,豆瓣电影Top250首页
url = "https://movie.douban.com/top250"
# 第二步:设置请求头,伪装成浏览器访问(否则容易被ban)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
# 第三步:发起请求,获取网页内容
response = requests.get(url, headers=headers)
html = response.text # 获取网页HTML源代码
# 第四步:用BeautifulSoup解析HTML
soup = BeautifulSoup(html, "html.parser") # 指定解析器
# 第五步:找到所有电影条目(电影信息在div.list-item里)
movie_list = soup.find_all("div", class_="item")
# 第六步:准备存储数据
movies = [] # 空列表存放电影信息
# 第七步:遍历每个电影,提取信息
for movie in movie_list:
# 提取电影标题(在span.title里,第一个是中文名)
title = movie.find("span", class_="title").text
# 提取评分(在span.rating_num里)
rating = movie.find("span", class_="rating_num").text
# 提取豆瓣链接(在div.hd里的a标签)
link = movie.find("div", class_="hd").a["href"]
# 把每部电影的信息存成字典,加到列表里
movies.append({
"title": title,
"rating": rating,
"link": link
})
# 第八步:保存到CSV文件
withopen("douban_movies.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["title", "rating", "link"])
writer.writeheader() # 写入表头
writer.writerows(movies) # 写入数据
# 第九步:打印前3条,验证结果
print("✅ 爬取成功!前3部电影:")
for m in movies[:3]:
print(f"{m['title']} - 评分:{m['rating']}")
运行效果:
✅ 爬取成功!前3部电影:
肖申克的救赎 - 评分:9.7
霸王别姬 - 评分:9.6
阿甘正传 - 评分:9.5
**这个项目教会你什么
**
- • 如何解析网页内容(BeautifulSoup)
- • 如何提取想要的信息(find、find_all)
这就是一个「数据采集」项目的完整流程
每个行业都需要采集数据,这个技能学会了就是你的铁饭碗
项目二:批量图片压缩工具
手机里照片太多,占内存
想把图片批量压缩变小
这个脚本帮你一键压缩一个文件夹里的所有图片
import os # 操作文件的库
from PIL import Image # PIL图像处理库
# 第一步:设置要处理的文件夹路径(改成你自己的文件夹)
input_folder = "photos"# 输入文件夹
output_folder = "compressed"# 输出文件夹
# 第二步:创建输出文件夹(如果不存在就创建)
ifnot os.path.exists(output_folder):
os.makedirs(output_folder)
# 第三步:获取输入文件夹里所有文件
files = os.listdir(input_folder)
# 第四步:统计处理了多少张图片
count = 0
# 第五步:遍历每个文件
for filename in files:
# 第六步:只处理图片文件(jpg、png、jpeg)
if filename.lower().endswith((".jpg", ".jpeg", ".png")):
# 拼接完整路径
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, filename)
# 第七步:打开图片
img = Image.open(input_path)
# 第八步:压缩图片(宽度800像素,质量60%)
# resize调整尺寸,save保存,quality设置压缩质量
img.resize((800, int(800 * img.height / img.width)))
img.save(output_path, quality=60, optimize=True)
# 计数+1
count += 1
print(f"✅ 已压缩: {filename}")
# 第九步:打印处理结果
print(f"\n🎉 完成!共压缩 {count} 张图片")
print(f"📁 原图在: {input_folder}")
print(f"📁 压缩后在: {output_folder}")
运行效果:
✅ 已压缩: IMG_001.jpg
✅ 已压缩: IMG_002.jpg
✅ 已压缩: IMG_003.png
🎉 完成!共压缩 3 张图片
📁 原图在: photos
📁 压缩后在: compressed
**这个项目教会你什么
**
- • 如何批量读取文件夹里的文件(os.listdir)
- • 如何处理图片(Image.resize、Image.save)
- • 如何设置压缩参数(quality、optimize)
这个脚本看起来简单,但它解决了一个真实问题——批量处理文件
这是很多工作的基础
项目三:天气查询小助手
想知道今天的天气
不需要打开手机APP,运行一行命令就查了
这个脚本调用免费天气API,实时查询任意城市的天气
import requests # 发送网络请求
import json # 处理JSON数据
# 第一步:配置API(使用免费天气API接口)
api_key = "demo"# 这里用演示key,实际用需要去天气API网站申请
city = "北京"# 要查询的城市,可以改成上海、杭州、深圳等
# 实际可用的免费API示例(和风天气,需要注册获取key)
url = f"https://api.qweather.com/v7/weather/now?location={city}&key=YOUR_KEY"
# 为了演示,我们用模拟数据(如果你有真实key,换成上面的url)
# 这里先演示结构,实际跑的时候换上真实key
defget_weather(city_name):
# 第二步:发送请求(无key时用模拟数据演示)
try:
# 如果有真实key,解开下面这行注释,用真实API
# response = requests.get(url)
# data = response.json()
# 演示用:模拟返回数据
data = {
"now": {
"temp": "18", # 温度
"text": "多云", # 天气状况
"humidity": "65%", # 湿度
"windDir": "东北风"# 风向
}
}
# 第三步:提取天气信息
weather = data["now"]
# 第四步:格式化输出
result = f"""
🌤️ {city_name}今日天气:
------------------
🌡️ 温度:{weather['text']}{weather['temp']}°
💧 湿度:{weather['humidity']}
🌬️ 风向:{weather['windDir']}
"""
return result
except Exception as e:
returnf"❌ 查询失败: {str(e)}"
# 第五步:执行查询并打印结果
print(get_weather(city))
运行效果:
🌤️ 北京今日天气:
------------------
🌡️ 温度:多云 18°
💧 湿度:65%
🌬️ 风向:东北风
**这个项目教会你什么
**
- • 如何调用外部API(requests.get)
- • 如何解析JSON数据(json.loads / response.json)
调用API是编程的核心技能之一
学会了这个,你就能把互联网上的各种数据为己所用
总结:3个方法,告别无效学习
到这里,我们来回顾一下今天的核心内容:
1️⃣ 停止「看」教程,开始「做」项目
看教程不会让你学会Python,做项目才会
每学一个知识点,就找一个实际场景去用它
哪怕很小,哪怕只是处理一个文件,都是进步
2️⃣ 把大项目拆成小模块
不要想着一口气写一个完整项目
拿到一个需求,先拆:数据从哪来、怎么处理、怎么输出
把每个模块单独写,最后组装起来
3️⃣ 遇到问题,先自己「挣扎」1小时
很多人一遇到报错就去问人、大求助
正确的姿势是:自己先尝试解决30分钟-1小时
百度、CSDN、Stack Overflow——80%的问题都有答案
你需要的是「自己动手找答案」的能力
行动建议:今天就开始
不要把这个文章「收藏」了就划走
现在、立刻、马上——
然后,你会回来感谢我的
下期预告:很多人跑通了第一个脚本,但一到「反爬虫」「登录验证」「分布式爬取」就跪了
下次我来教你——如何绕过硬核网站的反爬机制,写一个真正能用的数据采集系统
🐍 Python小甲鱼|持续分享硬核Python技术,陪你从0到1
如果你觉得这篇文章有帮助,点个在看,让更多需要的人看到
有问题评论区见,我会一一回复