第 6 章:文件与标准库

程序结束,变量就消失了。要让数据留下来,就要写到文件里。 这一章同时带你把标准库用起来——基石的标准库都是中文命名,拿来即用。

6.1 标准库是什么

标准库是随语言附带的一批现成模块。用 导入 引入:

python导入 随机
令 点数 = 随机.随机整数(1, 6)
打印("掷出了", 点数, "点")

导入 模块名 之后,用 模块名.函数(...) 使用里面的功能。

标准库底层调用的是 Python 的成熟实现,你不用担心它的可靠性。

6.2 文件:把数据留下来

导入 文件 后,最常用的就这几个:

python导入 文件

文件.写文本("留言.txt", "你好,文件!\n")   # 写(覆盖)
打印(文件.读文本("留言.txt"))              # 读
文件.追加文本("留言.txt", "又来了一行\n")   # 追加到末尾
打印(文件.文件存在("留言.txt"))            # 真
文件.删除文件("留言.txt")                  # 删除

逐行处理文本文件:

python文件.写行("日记.txt", ["第一天", "第二天"])
遍历 行 在 文件.按行读("日记.txt"):
    打印("日记:", 行)

其他实用功能:列出目录(路径)、创建目录(路径)、复制(源, 目标)、 文件大小(路径)、路径拼接(a, b)、文件名(路径)、扩展名(路径)。

路径可以写相对路径(日记.txt,就在程序所在目录)或绝对路径。

6.3 数学:计算更方便

python导入 数学
打印(数学.开方(16))            # 4.0
打印(数学.四舍五入(3.14159, 2))  # 3.14
打印(数学.绝对值(-5))           # 5
打印(数学.四舍五入(数学.圆周率, 4))  # 3.1416
打印(数学.最大公约数(12, 18))   # 6
打印(数学.最小公倍数(4, 6))     # 12
打印(数学.阶乘(5))              # 120

还有 平方、幂、向上取整、向下取整、对数、常用对数、 正弦、余弦、正切、角度转弧度 等。

6.4 时间:知道现在几点

python导入 时间
打印(时间.现在())        # 2026-09-01 13:40:00
打印(时间.今天())        # 2026-09-01

令 此刻 = 时间.此刻()    # 字典:年/月/日/时/分/秒/星期
打印("今年是", 此刻["年"], "年,星期", 此刻["星期"])

打印(时间.星期名("2026-09-01"))    # 二
打印(时间.加天数(30, "2026-01-01"))  # 2026-01-31

测一段代码跑了多久:

python导入 时间
令 开始 = 时间.高精度时间()
# ……干点活……
令 耗时 = 时间.高精度时间() - 开始
打印("耗时", 耗时, "秒")

6.5 表格:处理 CSV 数据

CSV 是最常见的表格文件(Excel 可以直接打开)。表格 模块让你像操作表格一样处理它:

python导入 表格

# 写一张成绩表:第一行是表头
表格.写表格("成绩.csv", [
    ["姓名", "分数"],
    ["小明", "85"],
    ["小红", "92"],
])

令 t = 表格.读表格("成绩.csv")
打印(表格.表头(t))            # ['姓名', '分数']
打印(表格.挑选(t, "姓名"))    # ['小明', '小红']

常用操作一览:

功能写法
读表格表格.读表格("文件.csv")
挑一列表格.挑选(t, "姓名")
挑多列表格.挑选(t, ["姓名", "分数"])
筛选行表格.筛选(t, "班级", "1班")
排序表格.排序按(t, "分数", 真)(真 = 从大到小)
统计表格.汇总(t, "分数") → 个数/总和/平均/最大/最小
追加一行表格.追加("文件.csv", ["小刚", "78"])
写表格表格.写表格("文件.csv", 行列表)

统计直接一步到位:

python令 s = 表格.汇总(t, "分数")
打印("平均分:", s["平均"], "最高分:", s["最大"])

6.6 试试看

  1. 写一个留言板:程序运行时让用户输入留言,追加到 留言板.txt,然后打印全部留言。
  2. 造一张含 5 个学生的成绩 CSV,输出平均分、最高分和按分数排序的名单。
  3. 用 时间.加天数 算出今天往后 100 天是哪天、星期几。

示例代码:examples/tutorial/08_读写文件.jsh、examples/tutorial/09_成绩表分析.jsh

本章小结