path

  1. 绝对路径:绝对路径是指文件在硬盘上真正存在的路径。例如“1.txt”这个文件是存放在硬盘的“C:\Users\15063\Desktop”目录下,那么 “1.txt”这个文档的绝对路径就是“C:\Users\15063\Desktop\1.txt”。
  2. 相对路径:相对于自己的目标文件位置。例如“1.htm”文件所在目录为“C:\Users\15063\Desktop\lqf”,而“1.txt”文件所在目录为“C:\Users\15063\Desktop”,那么“1.txt”相对于“1.htm”文件来说,是在其所在目录的上级目录里。"1.htm" ----> "lqf\1.htm"       "1.txt" ----> "\1.txt"
  3. 两者区别:①绝对路径是一个文件实际存在于硬盘中的路径。②相对路径,指的是与自身的目标档案相关的位置。③绝对路径是指可以从这个路径上查找文件夹,不管是从外部或内部存取。而相对路径则是与它本身相关的,其它地方的档案和路径,则只能在内部存取。
# dir = "D:/Python files/100例题/例1/arrange_dir"       # 先把文件目录地址赋给变量,便于后期调用
# dir = "D:\\Python files\\100例题\\例1\\arrange_dir"       # 先把文件目录地址赋给变量,便于后期调用
# dir = '../arrange_dir'      # 先把文件目录地址赋给变量,便于后期调用
                            # 不在同一个目录,用../ 返回上一级目录调用
·小知识:Python怎样递归搜索目录?
import os
for root, dirs, files in os.walk('python/Lib/email'):
    # root代表当前目录
    # dirs代表当前目录下的子目录
    # files代表当前目录下普通文件

Python os模块

os模块Operating System,即操作系统,是Python中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。


版权声明:本文为优快云博主「普通网友」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_46416934/article/details/125241212


版权声明:本文为优快云博主「Albert Darren」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/m0_46223009/article/details/128065092


                
<think>我们正在讨论Python中的pathlib模块的Path用法。PathPython 3.4引入的用于处理文件系统路径的面向对象的模块。它提供了更直观、更易用的方法来操作路径,相比传统的os.path模块,代码更简洁、可读性更强。 我将介绍Path的核心功能,包括: 1. 创建Path对象 2. 路径拼接 3. 获取绝对路径 4. 路径组成部分(目录名、文件名、后缀等) 5. 文件检测(存在性、类型等) 6. 目录操作(列出文件、创建目录等) 7. 文件读写 下面通过代码示例详细说明。 </think>在 Python 中,`pathlib` 模块提供了面向对象的路径操作方法,替代了传统的 `os.path` 处理方式。以下是 `Path` 类的详细用法: ### Path 核心功能详解 #### 1. 创建 Path 对象 ```python from pathlib import Path # 创建绝对路径 abs_path = Path('/home/user/documents/report.txt') # 创建相对路径 rel_path = Path('data/images/photo.jpg') # 获取当前工作目录 cwd = Path.cwd() # 获取用户主目录 home = Path.home() print(f"绝对路径: {abs_path}") print(f"相对路径: {rel_path}") print(f"当前目录: {cwd}") print(f"用户主目录: {home}") ``` #### 2. 路径拼接与分解 ```python # 路径拼接 folder = Path('documents') file_path = folder / 'reports' / 'summary.docx' # 获取父目录 parent = file_path.parent # documents/reports # 获取文件名 name = file_path.name # summary.docx stem = file_path.stem # summary (无扩展名) suffix = file_path.suffix # .docx print(f"完整路径: {file_path}") print(f"父目录: {parent}") print(f"文件名: {name}") ``` #### 3. 路径检测与属性 ```python file = Path('data.txt') # 检查路径类型 print(f"是否存在: {file.exists()}") print(f"是文件: {file.is_file()}") print(f"是目录: {file.is_dir()}") # 获取路径属性 print(f"绝对路径: {file.resolve()}") print(f"路径组成部分: {list(file.parts)}") ``` #### 4. 目录操作 ```python # 创建目录(包括上级目录) new_dir = Path('project/docs/new') new_dir.mkdir(parents=True, exist_ok=True) # 遍历目录 for item in Path('.').iterdir(): print(f"目录项: {item.name}") # 递归遍历(Python 3.5+) py_files = list(Path('src').glob('**/*.py')) print(f"找到的Python文件: {len(py_files)}") ``` #### 5. 文件操作 ```python # 读取文本文件 config = Path('config.ini').read_text() # 读写二进制文件 image = Path('logo.png').read_bytes() Path('copy.png').write_bytes(image) # 文件重命名 original = Path('old_name.txt') original.rename('new_name.txt') # 删除文件 Path('temp.txt').unlink(missing_ok=True) ``` #### 6. 高级用法 ```python # 路径匹配 if Path('data.csv').match('*.csv'): print("CSV 文件") # 修改扩展名 new_path = Path('report.txt').with_suffix('.pdf') # 获取文件统计信息 stats = Path('data.bin').stat() print(f"大小: {stats.st_size} 字节") print(f"修改时间: {stats.st_mtime}") ``` ### Path 与传统 os.path 对比 | 操作类型 | `pathlib.Path` 方式 | `os.path` 方式 | |------------------|-----------------------------------|-----------------------------------| | 拼接路径 | `Path('a') / 'b' / 'c'` | `os.path.join('a', 'b', 'c')` | | 获取父目录 | `path.parent` | `os.path.dirname(path)` | | 检查文件存在性 | `path.exists()` | `os.path.exists(path)` | | 获取绝对路径 | `path.resolve()` | `os.path.abspath(path)` | | 获取文件名 | `path.name` | `os.path.basename(path)` | | 获取扩展名 | `path.suffix` | `os.path.splitext(path)[1]` | ### 最佳实践 1. **优先使用 Path 对象**:所有文件操作都通过 Path 实例方法完成 2. **路径拼接使用 `/` 运算符**:更直观且避免拼接错误 3. **处理路径时使用 resolve()**:确保获取绝对路径 4. **使用 glob 代替 os.walk**:更简洁的递归文件查找 5. **设置 `exist_ok=True`**:避免目录创建时的冗余检查
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值