Python初学笔记(六)常用标准库先学这几个

发表于 2025-04-16 22:28 866 字 5 min read

Spring AI学习笔记(四)工具调用和MCPSpring AI学习笔记(三)RAG从文档入库到回答Spring AI学习笔记(二)ChatClient从怎么调到怎么封装Spring AI学习笔记(一)它到底解决什么问题java新版本-java25学习笔记(四)用JFR和GC日志做一次体检java新版本-java25学习笔记(三)虚拟线程要和资源边界一起看java新版本-java25学习笔记(二)运行时基线先统一java新版本-java25学习笔记(一)LTS版本对比和学习路线主流AI Agent能力对比与工程选型我用Kiro做了个自己的工具站盘一盘虚拟线程我用Trae做了个AstrBot的AI角色扮演插件Python初学笔记(六)常用标准库先学这几个Python初学笔记(五)读写文件和处理异常Python初学笔记(四)函数让代码开始有结构Python初学笔记(三)条件、循环和推导式Python初学笔记(二)变量和基础类型比想象中重要Python初学笔记(一)先把环境和运行方式弄明白主流AI大模型能力对比Java 21和Spring Boot 3升级笔记(五)日志指标与可观测性Java 21和Spring Boot 3升级笔记(四)数据访问层适配Java 21和Spring Boot 3升级笔记(三)虚拟线程使用边界Java 21和Spring Boot 3升级笔记(二)Jakarta迁移要点Java 21和Spring Boot 3升级笔记(一)工程基线整理魔法値をどうやって我慢する?JPAのSpecification大改造!处理生僻字乱码:JPA框架对于Oracle的NVarchar2,NChar,NClob类型支持Redis Stream能不能当轻量消息队列用RocketMQ 5学习笔记:普通消息之外要看什么事件流不是换个消息队列这么简单Kubernetes学习笔记04:发布、排障和观测Kubernetes学习笔记03:配置、密钥和存储Kubernetes学习笔记02:Deployment、Service和IngressKubernetes学习笔记01:Pod和控制器mysql索引原理02--存储引擎索引的实现mysql索引原理01--索引的数据结构
この投稿は「日本語」では表示できません。元の投稿を表示しています。
  Python 有一句话叫 batteries included,大概意思是标准库自带很多常用能力。   初学时不需要马上追一堆第三方库。很多日常脚本用标准库就能完成。比如处理路径、时间、JSON、CSV、命令行参数、日志、随机数、HTTP 简单请求等。  &emsp...

前言

  Python 有一句话叫 batteries included,大概意思是标准库自带很多常用能力。

  初学时不需要马上追一堆第三方库。很多日常脚本用标准库就能完成。比如处理路径、时间、JSON、CSV、命令行参数、日志、随机数、HTTP 简单请求等。

  这篇记录几个我觉得初学阶段最值得先熟悉的标准库。不是完整教程,而是知道它们能解决什么问题。

pathlib

  pathlib 用来处理文件路径。

from pathlib import Path

base_dir = Path("data")
file_path = base_dir / "users.txt"

它比字符串拼接路径更清楚。

常用操作:

file_path.exists()
file_path.name
file_path.suffix
file_path.parent

遍历目录:

for path in Path("data").glob("*.txt"):
    print(path)

写脚本处理文件时,pathlib 基本必学。

datetime

  datetime 用来处理日期时间。

from datetime import datetime, timedelta

now = datetime.now()
tomorrow = now + timedelta(days=1)

格式化:

text = now.strftime("%Y-%m-%d %H:%M:%S")

解析字符串:

dt = datetime.strptime("04-16", "%m-%d")

初学时要注意日期格式里的大小写。%m是月份,%M是分钟。这个很容易写错。

json

  json 用来处理 JSON 数据。

import json

data = {"name": "Tom", "age": 18}
text = json.dumps(data, ensure_ascii=False)

字符串转对象:

data = json.loads(text)

文件读写:

with open("data.json", "w", encoding="utf-8") as file:
    json.dump(data, file, ensure_ascii=False, indent=2)

处理接口响应、配置文件、小数据存储时都很常用。

csv

  csv 用来读写表格类文本文件。

读取:

import csv

with open("users.csv", "r", encoding="utf-8") as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row["name"])

写入:

with open("users.csv", "w", encoding="utf-8", newline="") as file:
    writer = csv.DictWriter(file, fieldnames=["name", "age"])
    writer.writeheader()
    writer.writerow({"name": "Tom", "age": 18})

newline=""在写 CSV 时建议加上,避免某些系统里出现空行问题。

如果只是简单处理 CSV,标准库够用。复杂数据分析再考虑 pandas。

argparse

  argparse 用来写命令行参数。

比如你写了一个处理文件的脚本,不想把路径写死在代码里,就可以用 argparse。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--input", required=True)
parser.add_argument("--output", required=True)
args = parser.parse_args()

print(args.input)

运行:

python tool.py --input a.txt --output b.txt

这样脚本就更像一个小工具,而不是一次性代码。

logging

  刚开始写 Python,很多人都用 print 调试。

print 没问题,但稍微正式一点的脚本,logging 更合适。

import logging

logging.basicConfig(level=logging.INFO)
logging.info("start")
logging.warning("something wrong")

logging 可以区分级别,也能配置输出格式和文件。

简单脚本可以先用 basicConfig,等项目复杂了再单独配置 logger。

不要所有信息都 print。日志级别能让运行信息更清楚。

random

  random 用来生成随机数。

import random

number = random.randint(1, 10)
item = random.choice(["A", "B", "C"])

打乱列表:

items = [1, 2, 3]
random.shuffle(items)

它适合普通随机场景,比如测试数据、小游戏、抽样。安全相关随机不要用 random,要用 secrets。

collections

  collections 里有一些很好用的数据结构。

Counter 可以计数:

from collections import Counter

words = ["java", "python", "python"]
counter = Counter(words)
print(counter)

defaultdict 可以给字典默认值:

from collections import defaultdict

groups = defaultdict(list)
groups["A"].append("Tom")

这些工具能让代码少写很多判断。

小结

  Python 标准库很丰富,初学阶段不用一口气全学。

  我觉得可以先熟悉 pathlib、datetime、json、csv、argparse、logging、random、collections。这几个覆盖了路径、时间、数据格式、命令行、日志和常用数据处理。

  学标准库的目的不是背 API,而是知道遇到问题时先去哪里找工具。很多小需求不用装第三方包,标准库已经够用了。

気に入ったならばコメントを残してくださいね~

© 2019 - 2026 VincentHo @VincentHo
Powered by theme astro-koharu · Inspired by Shoka