AI 给出的 Python 脚本可能只有十几行,也可能会读取文件、连接服务或删除内容。运行前先看清它会碰什么,再决定是否要试。这篇用一个只读虚构报名表的短脚本,练习找出输入、输出、依赖和可能的副作用。

需要先会打开终端并运行Python。建议先看D1文件、路径和压缩包、Python入门和Python基础语法。

先检查四件事

检查项 要问的问题 在示例中看哪里
输入 脚本从哪里拿资料? Path("报名记录.csv")和source.open(...),读取当前练习目录里的CSV
输出 运行后会出现什么? print(...)只在终端显示三行统计
依赖 是否要安装别的软件或Python包? import csv、from pathlib import Path;两者都随Python安装
副作用 会不会改文件、联网或启动其他程序? 这段代码只读CSV,没有写入/删除调用,也没有网络请求

这里的“副作用”指运行脚本后电脑上发生的额外动作,例如覆盖文件、删除文件、上传资料或启动命令。看不懂它准备做什么,就先不要运行。

准备一份虚构报名表

把Python脚本练习材料包解压到一个新的空文件夹。里面的报名记录.csv只有三行虚构数据:两人已确认,一人候补。脚本也要放在这个文件夹里,因为它用当前目录下的相对路径寻找CSV。

看懂示例脚本

import csv
from pathlib import Path

source = Path("报名记录.csv")
wanted_status = "已确认"

with source.open(encoding="utf-8-sig", newline="") as file:
    rows = list(csv.DictReader(file))

matched = 0
for row in rows:
    if row["status"] == wanted_status:
        matched += 1

print(f"读取文件:{source.name}")
print(f"总记录:{len(rows)}")
print(f"状态“{wanted_status}”:{matched}人")

从上往下看:

  1. import csv和Path说明脚本使用了什么。这里没有外部软件包。
  2. Path("报名记录.csv")指定输入文件名。它是相对路径,实际位置由终端当前目录决定。
  3. source.open(...)以读取方式打开文件;csv.DictReader按第一行的列名读取每条记录。
  4. for逐条查看名单,if只统计状态和wanted_status一致的记录。
  5. 最后三行print把文件名、总数和匹配人数显示在终端。

list(...)会把读到的记录暂存在内存里,适合这里的三行样例。大文件要先确认电脑内存和处理方式,别把这段小示例直接用于大量数据。

在隔离目录里运行

先用终端cd进入刚解压的练习文件夹,再确认脚本和CSV都在当前目录:

pwd
ls

列表中应同时看到ai_script_review.py和报名记录.csv。确认是本次练习目录后再运行:

python ai_script_review.py

应看到:

读取文件:报名记录.csv
总记录:3
状态“已确认”:2人

人工数一下CSV:三行中两行的status是“已确认”,所以结果是2。脚本只读取这份练习文件并打印结果。

改一个条件,再核对结果

打开ai_script_review.py,把:

wanted_status = "已确认"

改为:

wanted_status = "候补"

保存后重新运行。输出应变成状态“候补”:1人。再和CSV逐行对照,确认只有周然一条候补记录。

练习包的先检查再运行.md列出了这段脚本的输入、输出、依赖和操作范围;两个expected-*.txt文件可用来核对两种输出。

遇到报错时检查

报错或现象 先检查
FileNotFoundError 终端当前目录是不是练习文件夹,文件名是否一致
KeyError: 'status' CSV首行是否包含status这一列,代码键名是否拼对
中文乱码或解码错误 确认用的是包内CSV;它采用UTF-8编码
输出人数不对 先数CSV里的状态值,再检查筛选文字和空格

陌生脚本的运行底线

只在空的练习目录中试自己能逐行解释的代码。重点搜索write_text、unlink、rename等文件操作,requests或urllib等网络调用,以及subprocess、os.system等启动外部程序的代码。检查写入路径、发送对象和需要的密钥;不确定时先停下来,请可信的技术人员看过。

本例在Mac、Python 3.12.13上读取三行虚构CSV;将筛选条件改为“候补”后,输出与手工统计一致。材料包中的脚本没有写文件或网络请求。Windows操作、其他编码的CSV和大文件处理未测试。Python官方文档可查csv模块和pathlib路径。

封面背景由AI生成,标题另行排版。