CHAPTER 05 / 08
利用AI,零基础速通Python · 05
零基础速通Python,第五篇,文件的读取写入、批处理以及利用大模型进行语义分析。
上一篇,我们让系统具备了“判断能力”。布尔值解决的是状态表达,if / else解决的是策略分岔, 循环让判断可以批量发生。
但到这里,还有一个更现实的问题没有解决:数据从哪里来?处理完成之后,又到哪里去?
前几篇文章里,我们处理的数据,都是“写在代码里的”。变量、列表、字典,都是我们手动定义的。但真实世界的数据不是这样的。
真实世界的数据来自用户上传的文件、来自日志、来自导出的报表、来自下载的文本、来自外部系统……也就是说:自动化系统不仅需要“决策能力”,还需要“数据通道”。
这一篇,我们进入一个非常基础、但在产品与AI系统中极其核心的主题——文件读写(File I/O)与数据流动。
读取文件
在计算机内部,一切都是内存中的对象。但当你关掉程序,这些数据就消失了。
如果你希望保存分析结果、读取用户资料、批量处理日志、生成报告供下载等,你就必须使用文件。文件,是程序与现实世界之间的桥梁。
假设你正在做一个“用户反馈情绪分析器”。 用户每天会生成一个 .txt 文件,里面是他们的反馈内容。 我们第一步要做什么? 读取它。
f = open("feedback.txt", "r")
content = f.read()
f.close()这三行代码做了一件非常简单却非常关键的事:把磁盘上的内容,加载到内存中,变成字符串。技术上:
-
“r”表示读取模式(read)
-
f.read() 读取全部内容,并把文件内容变成一个字符串
-
f.close() 关闭文件并释放系统资源
更现代一点的写法是:
with open("feedback.txt", "r") as f:
content = f.read()with会自动关闭文件,这是Pythonic风格。
这里发生的本质是:磁盘 → 内存。也就是说,我们把现实世界的数据,转化成可以计算的对象。
读取文件最常见的路径问题
很多初学者在第一次读取文件时,遇到的不是语法错误,而是这一行报错:
FileNotFoundError:
[Errno 2] No such file or directory这句话翻译成大白话就是:Python找不到你说的那个文件。这不是因为 Python 不会读文件,而是你没有告诉它“文件在哪里”。
所以,文件问题,本质是路径问题。
第一步:先知道文件在哪。
假设你电脑上有一个文件:daily_notes.txt,你必须先确认三件事:
1、文件真的存在吗?
2、它在哪个文件夹里?
3、你的程序现在运行在哪个文件夹?
第二步:查看当前工作目录。
Python默认会在“当前工作目录”里找文件。我们可以这样查看:
import os
print(os.getcwd())输出可能是:D:\PythonProject。这说明你的程序正在D:\PythonProject这个文件夹里运行。
Python会优先在这个文件夹里寻找文件。如果你的.txt文件不在这里,就一定会报错。
第三步:查看当前目录下有什么文件。
继续使用os模块:
import os
print(os.listdir())你会看到类似:[‘main.py’, ‘report.txt’, ‘data.csv’]的回答。
如果你想读取的文件不在这个列表里,说明它不在当前工作目录。这一步非常重要,很多人根本没确认文件是否真的在运行目录里。
第四步:如何找到文件的完整路径。
在Windows系统中找到你的文件,按住Shift右键点击文件,选择“复制为路径” 。你会得到类似:
"C:\Users\Fangwen\Desktop\daily_notes.txt"然后在Python里这样写:
with open("C:/Users/Fangwen/Desktop/daily_notes.txt", "r") as f:
content = f.read()注意两点:1、路径里的\可以改成/或者写成\\例如:
"C:\\Users\\Fangwen\\Desktop\\daily_notes.txt"否则 \n 可能被误解为换行符。
而在Mac系统中,查看文件的路径方法更加简单,只需要将文件拖到终端即可。
当你开始关心:程序运行在哪?文件结构如何组织?数据存储在哪个层级?时,你已经从“写代码” 进入“设计系统结构”。
在真实AI产品中,文件路径往往意味着:数据仓库目录、日志存储目录、模型缓存目录、上传文件临时区等问题,路径设计,本质是架构设计的一部分。
批量读取文件:自动化真正开始发生
单个文件读取只是第一步,真正有意义的是批量处理。假设你有多个用户日志:
files = ["day1.txt", "day2.txt", "day3.txt"]我们可以这样做:
for file in files:
with open(file, "r") as f:
text = f.read()
print(file, "长度为:", len(text))循环 + 文件读取 = 批量数据处理能力。
如果再加上AI:
for file in files:
with open(file, "r") as f:
text = f.read()
prompt = f""" 判断下面文本情绪是 Positive 还是 Negative: {text} """
result = get_llm_response(prompt)
print(file, "->", result)你已经构建了一个“情绪扫描系统”。Python负责数据流动,AI负责语义理解。这是现代自动化的标准分工。
写入文件
读取解决的是输入问题,写入解决的是输出问题。
假设我们做了一个“个人成长分析系统”,AI输出了结果:
analysis = """
本周关键词:专注
建议:减少干扰源,优化时间结构。
"""我们希望保存它:
with open("weekly_report.txt", "w") as f:
f.write(analysis)这里的 “w” 表示写入模式(write)。
注意一个关键点:如果文件已经存在,它会被覆盖。
这在真实产品里意味着什么?意味着你要设计:是否覆盖? 是否追加? 是否版本存档?等等。
文件写入,是数据策略的一部分。
生成结构化输出
结构化的意思是,数据按照固定规则排列,便于程序理解。例如:
姓名,分数
张三,85
李四,92这就是结构化格式。
它有列、有分隔符、有规则。对人类来说是表格,对程序来说是可解析的数据。因此,CSV是最简单的结构化格式。CSV的全称是Comma Separated Values,意思是“逗号分隔值”。
假设你做了一个学习效率分析系统,AI 给出了每天的评分:
scores = [
("Day1", 82),
("Day2", 90),
("Day3", 76)
]我们可以生成CSV内容:
csv_content = "Date,Score\n"
for day, score in scores:
csv_content += f"{day},{score}\n"
with open("score.csv", "w") as f:
f.write(csv_content)生成的文件内容是:
Date,Score
Day1,82
Day2,90
Day3,76更高级一点的做法是让LLM直接生成结构化格式。例如:
prompt = f"""
从下面文本中提取姓名和成绩。
输出为 CSV 格式。
不要多余解释。
格式:Name,Score
"""
response = get_llm_response(prompt)
with open("result.csv", "w") as f:
f.write(response)这里发生了一件重要的事情——你开始用Prompt控制输出格式。这一步,是“工程化使用AI”的核心能力。
当你开始控制模型输出格式时,你其实在做“接口定义”。
一个完整的小案例:AI日记关键词提取器
假设你每天写日记,保存在不同文件里:
day1.txt
day2.txt
day3.txt我们让AI自动提取每天的“核心关键词”,并保存为 CSV 文件。
files = ["day1.txt", "day2.txt", "day3.txt"]
all_keywords = "Date,Keyword\n"
for file in files:
with open(file, "r") as f:
text = f.read()
prompt = f"""
提取下面文本的一个核心关键词:
{text}
"""
keyword = get_llm_response(prompt)
all_keywords += f"{file},{keyword}\n"
with open("keywords.csv", "w") as f:
f.write(all_keywords)你已经做了一个小型“关键词提取与结构化分析系统”,并且实际上已经做了用大模型来进行语义分析的事情。
你现在应该达到什么程度?
这一这一篇看完,希望你能够:
1、知道如何读取文件
2、知道如何写入文件
3、能够用循环批量处理多个文件
4、理解路径与工作目录
5、能把文件操作与AI结合形成完整流程
当你把这一阶段的内容串起来看,会发现我们讨论的从来不是零散的语法,而是一条完整的数据路径。真正的AI产品,并不是某个神秘模型在独立运作,而是一整套清晰的数据流在稳定运行。模型只是其中一环,结构才是核心。
当你开始用“输入—处理—判断—决策—输出—存储”这样的框架去理解问题时,编程语言就不再是目的,而只是表达工具。
你正在建立的,是一种系统建模能力——把现实世界的模糊问题,拆解为可定义的状态、可执行的逻辑和可流动的数据。这种能力,远比记住多少语法更重要。
接下来,我们会进入一个更真实的世界。因为现实系统不会永远按理想路径运行。文件可能缺失,数据可能异常,模型可能返回意料之外的结果。真正成熟的系统,并不是不会出错,而是在出错时仍然可控、可恢复、可追踪。
稳定性,才是智能系统走向生产环境的第一门槛。