import 前加 from,表示模块写在 from 和 import 之间(如 pathlib),模块里要拿的类写在 import 后面(如 Path)。pathlib 是 Python 3.4+ 引入的面向对象文件系统路径处理模块,比传统 os.path 更直观易读。
一、基础:创建路径对象
Path() 可接收字符串路径(绝对/相对),支持多段路径拼接(无需手动加 /):
二、核心操作:路径属性与判断
1. 路径属性(提取各部分)
2. 路径状态判断
三、文件/目录操作
1. 目录操作
2. 文件操作
四、实用场景
1. 批量改后缀
2. 读文件元信息
五、与 os.path 对比
| 操作 | os.path | pathlib |
|---|---|---|
| 拼接路径 | os.path.join(“a”,“b”,“c.py”) | Path(“a”)/“b”/“c.py” |
| 父目录 | os.path.dirname("/a/b/c.py") | Path("/a/b/c.py").parent |
| 是否文件 | os.path.isfile(“x.txt”) | Path(“x.txt”).is_file() |
Path 是面向对象路径、支持链式调用、跨平台自动处理 / 和 \、内置 read/write 无需手动 open(),推荐优先用 pathlib 替代 os.path。
六、from pathlib import Path 和 import pandas 的区别
前者是「从模块里拿出一个类」;后者是「把整个模块全部端进来」。
1. 语法对比
| 写法 | 导入目标 | 用时怎么写 |
|---|---|---|
| from pathlib import Path | 只拿 pathlib 里的 Path 类 | Path(‘data.csv’) |
| import pandas | 整个 pandas 模块 | pandas.DataFrame(…) |
2. 背后机制
-
import pandas:解释器执行模块,在当前命名空间建一个名字 pandas 指向整个模块对象,所有类/函数都是它的属性,必须用 pandas.Series、pandas.read_csv 点语法访问;
-
from pathlib import Path:解释器同样把 pathlib 完整跑一遍,但只把 Path 这个类抽出来放进当前命名空间,可直接写 Path,无需模块前缀。
3. 实际影响
-
命名空间:from … import 只引入 1 个名字;import 引入整个模块(内部上百个对象挂在模块名下)。
-
简洁性:只会用到极个别对象时 from 更短;频繁用到模块内很多函数、或名字易冲突时保留模块前缀。
-
重名风险:from pandas import DataFrame 容易和你自定义的 DataFrame 冲突;写成 import pandas as pd 永远 pd.DataFrame,零冲突。
4. 该用哪种
| 场景 | 推荐 | 理由 |
|---|---|---|
| 只用一两个不冲突的名字 | from module import Klass | 短、可读 |
| 用到很多功能或名字太通用 | import module [as alias] | 安全、可维护 |
| 社区惯例 | import pandas as pd / np / plt | 大家都这么写,一眼看懂 |
一句话总结:from pathlib import Path → 只把类拿进来省前缀,适合几乎只用 Path;import pandas → 把整个模块搬进来用 pandas.xxx 访问,安全功能全。选哪个看“会不会频繁用模块里其他东西”和“名字冲不冲突”。