Python 运行环境、终端命令与报错阅读
.py 文件是纯文本,要由解释器读取并逐行执行。网页靠系统预装的浏览器打开,解释器要自己装。
读取 .py 文件、逐行执行其中语句的程序。不属于系统预装组件,装 Python 主要装的就是它。
保存代码的纯文本文件。Python 源文件的扩展名必须是 .py。
文件名末尾的 .py、.txt 等。资源管理器默认隐藏已知扩展名,要在"查看"里打开显示。
文件名填"点名.py",保存类型不改
得到 点名.py.txt,只是一个文本文件
保存后打开"显示扩展名"核对
文件名真实的结尾是 .py
本章成品"随机点名器":十几行 Python 代码,名单写在代码里,运行后随机抽一个姓名显示在终端上。代码见 9.6。
PATH 是一组目录路径。输入命令后,系统按顺序到这些目录里找同名程序,都找不到就报告命令不存在。
系统保存的一组目录路径。在终端里输入命令名,系统到这些目录里找同名的可执行文件。
复选框保持未勾选
终端里输入 python,提示"不是内部或外部命令"
安装目录登记进 PATH
终端能找到 python.exe
终端用输入命令的方式操作计算机。命令里的文件名,默认从当前工作目录找起。
用输入命令代替点击图标来操作计算机的窗口,也叫命令行界面。Windows 上常用命令提示符和 PowerShell。程序的输出和报错都显示在这里。
终端此刻所在的目录,即提示符前面那段路径。命令里给出的文件名,默认从这个目录找起。
| 命令 | 作用 | 说明 |
|---|---|---|
| python --version | 显示解释器版本,如 Python 3.13.1 | 版本号因安装版本而异。能显示出来,说明条件一和条件二都满足(见 9.4) |
| cd 文件夹名 | 把当前目录切到指定文件夹(change directory) | 路径里有空格时,用英文双引号括起来 |
| dir | 列出当前目录下的文件 | 确认目标文件在这里,文件名有没有多出 .txt |
| python 文件名.py | 运行指定的源文件 | 本章的核心命令,其余三条都为它做准备 |
C:\Users\liwei> python 点名.py
python: can't open file
用 cd 切过去,或在文件夹地址栏输入 cmd 回车
程序正常运行
程序要四个条件同时成立才能运行。运行失败时按一、二、三、四的顺序逐条核对,查到哪一条不成立就停在哪一条。
| 条件 | 内容 | 怎样满足 | 不成立时 |
|---|---|---|---|
| 一 | 系统里已经装了 Python 解释器 | 安装包从 Python 官方网站获取,选 Windows 版本 | 双击 .py 没反应,或弹出"选择打开方式" |
| 二 | 解释器所在目录已经登记进 PATH | 在安装界面第一屏勾上那个复选框 | 终端提示"不是内部或外部命令" |
| 三 | 文件是纯文本,扩展名是 .py | 记事本另存为时,"保存类型"选"所有文件" | 文件实为 点名.py.txt,终端提示找不到该文件 |
| 四 | 终端的当前目录就是文件所在的目录 | 在文件夹地址栏输入 cmd 回车,直接在这里打开终端 | 终端提示 can't open file |
卸载后从头再装一遍
只可能修好条件一和条件二
一、二、三、四,查到不成立的那条就停
直接修好出问题的那一条
结果要经过 print 才会显示在终端上。库要先 import 才能用,第三方库还要先用 pip 装到本机。
print 把括号里的内容送到终端显示,这条通道叫标准输出。程序内部的计算不会自动显示。
别人写好、可以直接使用的一批功能。随 Python 一同安装的叫标准库,其余叫第三方库。
把第三方库从网上装到本机的工具,在终端里执行。
random.choice(names)
NameError,名称未定义
第一行写 import random
正常取出一个姓名
AI 附送图形界面、语音播报、表格导出
要装第三方库,机房网络下很慢
"只用 Python 标准库""不要做图形界面"
结果直接输出到终端
读代码只确认三处:输入、输出、重复的部分。增减名单只改一行,保存后重新运行。
# ① 导入标准库 random,它提供随机选择功能 import random # ② 名单直接写在代码里。增加或删除姓名时,改这一行即可 names = ['林晓', '周敏', '赵鹏', '陈立', '孙倩', '王一凡', '李文博', '黄雅琴'] # ③ 从名单里随机取出一个元素 picked = random.choice(names) # ④ 把结果输出到终端 print('名单共', len(names), '人') print('本次抽中:', picked) # ⑤ 双击运行时窗口会在程序结束后立刻关掉。这一行让程序停在这里等一下 input('按回车键结束')
| 代码 | 作用 | 缺少或写错时 |
|---|---|---|
| import random | 导入标准库,random 提供随机选择功能 | 执行到 random.choice 时报告名称未定义 |
| names = ['林晓', …] | 名单。方括号里的若干项构成一份清单,输入在这里 | 引号或逗号打成中文全角标点,报告语法错误 |
| random.choice(names) | 从清单里随机取一项。每次结果可能不同,这是预期行为 | |
| print('名单共', len(names), '人') | 输出名单人数,让人数能被核对。输出在这里 | 名单被少读了几项也看不出来 |
| input('按回车键结束') | 让程序停在这里等一下 | 双击运行时,窗口在程序结束后立刻关掉 |
按三处核对:输入是 ② 的名单,输出是 ④ 的两条 print,这一份没有重复执行的部分。
# ② 从同一个文件夹里的 第09章演示_名单.txt 读名单,一行一个姓名 with open('第09章演示_名单.txt', encoding='utf-8') as f: names = [line.strip() for line in f if line.strip()] # ③ 名单为空时直接说明,不要装作抽了一次 if len(names) == 0: print('名单文件是空的,请先往里面写几行姓名') else: print('名单共', len(names), '人') print('本次抽中:', random.choice(names))
第 ③ 段处理名单文件存在、但里面一个字都没有的情况。不做这一步,程序会在看不见的地方出错。
encoding='utf-8' 告诉解释器按哪一套编码读文件。不写这一句,中文姓名在部分机器上会读成乱码。
名单读取版,不带名单文件
对方运行时得到 FileNotFoundError
.py 与 名单.txt,终端也在这个文件夹里运行
程序读到名单,正常抽取
三行版只有导入、名单、输出三行,没有人数和等待回车。名单读取版要和 名单.txt 放在同一个文件夹里运行。
栈回溯从最后一行读起。最后一行给错误类型和原因,上面几行给文件、行号和那一行代码。
程序执行中断时解释器输出的诊断记录,通常以 Traceback 开头。
| 类型 | 报错原文(最后一行) | 常见原因 |
|---|---|---|
| 模块未找到 | ModuleNotFoundError: No module named 'radnom' | 库名拼写有误,或者这个库还没装 |
| 名称未定义 | NameError: name 'random' is not defined | 没有 import 就用了,或者名称拼错 |
| 语法错误 | SyntaxError: invalid character ',' (U+FF0C) | 代码里混进了中文输入法的全角标点 |
| 缩进错误 | IndentationError: unexpected indent | 行首多出空格,复制粘贴之后最常见 |
| 文件无法打开 | python: can't open file '…\点名.py': [Errno 2] No such file or directory | 终端的当前目录不对,或者文件实为 .py.txt |
先按最后一行确定类型,再按第二行定位到具体的行。
Traceback (most recent call last):
这一句每段报错都有,定不了位
ModuleNotFoundError … line 3
类型和位置都定下来
名单里的姓名被写成了一整个字符串
程序照常运行,每次输出同一个结果
print('名单共', len(names), '人')
人数对不上,问题当场露出来
分别对应速查表的模块未找到、语法错误、缩进错误。各运行一次,看真实输出。
Python 的报错信息近年一直在改进:先是名称写错时提示 Did you mean,后来加入了指向具体表达式的标记符号,再往后漏掉 import 也会被指出。新版本给的线索更多,安装时不必特意找旧版本;但报错仍是英文,仍要读到最后一行才能确定类型。
向 AI 求助交四项:操作、预期、现象、报错原文。报错原文要原样粘贴,不要转述。
删掉"先用中文解释"那一句
当次能解决,同类错误再出现仍判断不了
"请先用中文解释这段报错的含义,再说明……"
知道错在哪里,下次自己能判断
AI 忽略贴出的报错,重写整份脚本
新代码和手上那份对不上,改了哪里无从核对
"不要重写整个脚本,只给出需要修改的那几行"
改动可以逐行核对
我要在 Windows 11 上安装 Python,用来运行一些小脚本。 请说明:装哪个版本、从哪里下载、安装时哪些选项必须勾选(尤其是环境变量那一项)、 装完之后怎么在终端里验证装成功了。 每一步写清楚需要点哪里、看到什么现象算成功。不要给截图链接,用文字描述。
写一个 Python 脚本,用于课堂随机点名,在 Windows 的终端里运行。 要求: ① 名单直接写在代码里,用一行列出,方便我以后自己增减姓名; ② 每次运行随机抽一人,先输出名单人数,再输出抽中的姓名; ③ 只用 Python 标准库,不要用需要 pip 安装的第三方库; ④ 不要做图形界面,结果直接输出到终端; ⑤ 末尾加一行等待回车的语句,让双击运行时窗口不会立刻关掉; ⑥ 每一段代码前加一行中文注释,说明这一段的作用。
| 生成提示词里的要求 | 原因 | 见 |
|---|---|---|
| 名单直接写在代码里,用一行列出 | 改动集中在一行,不会波及别处 | 9.6 |
| 只用 Python 标准库 | 第三方库要另外装,机房网络下耗时长 | 9.5 |
| 不要做图形界面,结果直接输出到终端 | 本章的输出经由标准输出显示在终端里 | 9.5 |
| 末尾加一行等待回车的语句 | 双击运行时,程序一结束窗口就关掉 | 9.6 |
终端窗口的完整截图,看得到提示符路径、输入的命令和全部输出。只截输出那一段,看不出是在哪个目录下运行的。
从解压开始,一步一步写到出问题的那一步,写到对方照着做能得到同样的结果。
你原本以为会看到什么。少了这一条,对方只知道你不满意,不知道你要什么。
互测时发现同学的程序有问题,或向教师描述故障,交这三样。这三样和第 3 章的验收标准对应:验收标准写"照着做应当得到什么",报 bug 写"照着做实际得到了什么"。
先装好环境并验证,再生成代码、在终端里运行。最后故意制造一次报错,按四件套求助。
用安装提示词拿到步骤清单,先核对有没有提到环境变量。没提这一项的清单不完整,照着装会在第 3 步出问题。已装好 Python 的机器,直接做第 3 步
产出:安装清单安装包从 Python 官方网站获取,勾上 Add python.exe to PATH。漏勾不必卸载,重新运行安装包选 Modify 补上
产出:装好的解释器打开终端,执行 python --version 与 pip --version,两条都显示版本号才算过。提示"不是内部或外部命令"的,回第 2 步
用生成提示词拿到代码,另存为 .py,核对不是 .py.txt。在文件夹地址栏输入 cmd 回车,打开终端运行。截图里要看得到提示符路径和输入的命令
产出:运行截图加两条、删一条,保存后重新运行,核对人数那一行跟着变。这一步确认你能自己改动并再次运行
产出:修改前后两次输出三选一:库名改错一个字母、某行行首多加两个空格、英文逗号换成中文逗号。先自己读出错误类型和行号,再用报错求助提示词提交,对照两边的判断是否一致
产出:报错记录四项| 报错记录 | 写什么 |
|---|---|
| 报错原文 | 终端里的完整报错,一个字不改 |
| 提交的文字 | 按报错求助提示词填好后发出的全文 |
| 得到的解释 | AI 对这段报错的中文解释 |
| 修改的那一行 | 改的是哪一行、改成了什么 |
上机时的多数问题都能归进四个前提条件中的一条。按现象查原因,再按表处理。
| 现象 | 原因 | 处理 |
|---|---|---|
| 输入 python 提示"不是内部或外部命令" | 安装时没勾环境变量选项 | 重新运行安装包选 Modify 补勾;临时可以改用 py 点名.py |
| 输入 python 之后打开了应用商店 | 系统的应用执行别名把 python 指向了商店 | 在设置里搜"应用执行别名",关掉 python.exe 相关的两项,重新打开终端 |
| 提示 python: can't open file | 终端的当前目录不是文件所在目录 | 在文件夹地址栏输入 cmd 回车重新打开终端,或者用 cd 切过去 |
| 双击 .py 之后窗口一闪就关 | 程序结束,窗口跟着关掉 | 代码末尾加 input('按回车键结束'),或者改在终端里运行 |
| 文件名实际是 点名.py.txt | 记事本另存为时没改"保存类型" | 打开资源管理器的扩展名显示,删掉多余的 .txt |
| 报语法错误 invalid character | 代码里混进了中文输入法的全角标点 | 把那一行的逗号、引号、括号全换成英文半角 |
| 报缩进错误 unexpected indent | 行首多出空格,复制粘贴之后最常见 | 删掉该行行首的空格,与上下文对齐 |
| 终端里的中文显示成方块 | 终端所用字体不含中文字形 | 在终端窗口的属性设置里,把字体改成新宋体或其他中文字体 |
| 报 FileNotFoundError,找不到名单文件 | 做了名单读取版,但 .txt 与 .py 不在同一个文件夹,或者终端当前目录不对 | 用 dir 确认两个文件都在当前目录下,再运行 |
提交四项内容,按六条标准验收;选做一项。
第09章演示_名单.txt,改名单不必碰代码,交出去的就是一个包。按教师提供的作业模板填写,文档开头注明所选题目;提交渠道见课堂通知,当堂提交。
零代码应用开发 · 第 9 章 让代码在电脑上跑