python进阶-03-pathlib替代os和os.path读写文件

python-28-python进阶pathlib替代os和os.path读写文件

一.简介

pathlib 是一个功能强大且简洁的模块,在python3.4版本以后被加入进来,主要的功能是

1.操作文件和目录路径

2.需要跨平台路径兼容

3.替代传统的os和os.path、open()

既然这么强大我们就来一步步解析pathlib并彻底掌握pathlib,好!来开始我们今天的日拱一卒!

二.pathlib 的核心是Path类

pathlib 的核心是 Path 类,用于创建和操作文件路径对象。

根据操作系统不同,Path 对象会自动使用适合的平台路径分隔符:

  • Windows:\
  • POSIX(Linux/macOS):/

三.pathlib常见的方法和用法

  1. 创建路径对象

    from pathlib import Path
    
    # 相对路径
    p1 = Path("example.txt")
    print(p1)  # 输出: example.txt
    
    # 绝对路径
    p2 = Path("/home/user/example.txt")
    print(p2)  # 输出: /home/user/example.txt
    
    # 当前目录
    p3 = Path.cwd()
    print(p3)  # 输出: 当前工作目录
    
  2. 获取路径属性

    p = Path("/home/user/example.txt")
    
    print(p.name)        # 文件名: example.txt
    print(p.stem)        # 文件名不含后缀: example
    print(p.suffix)      # 后缀名: .txt
    print(p.parent)      # 父目录: /home/user
    print(p.parts)       # 路径分段: ('/', 'home', 'user', 'example.txt')
    
  3. 检查路径

    p = Path("example.txt")
    
    print(p.exists())    # 检查路径是否存在
    print(p.is_file())   # 是否是文件
    print(p.is_dir())    # 是否是目录
    
  4. 创建和删除路径

# 创建文件
p = Path("new_file.txt")
p.touch()  # 创建空文件

# 创建目录
d = Path("new_folder")
d.mkdir(parents=True, exist_ok=True)  # 创建目录,包含父目录

# 删除文件或目录
p.unlink()  # 删除文件
d.rmdir()   # 删除目录(仅当目录为空)
  1. 路径拼接

    base = Path("/home/user")
    new_path = base / "documents" / "file.txt"
    print(new_path)  # 输出: /home/user/documents/file.txt
    
  2. 遍历目录

    p = Path("/home/user")
    
    # 遍历文件和子目录
    for item in p.iterdir():
        print(item)
    
    # 遍历所有文件(递归)
    for file in p.rglob("*.txt"):
        print(file)  # 输出所有 .txt 文件
    
  3. 文件操作,当文本文件读写 pathlib 默认使用的是UTF-8 编码

    # 写入文件
    p = Path("example.txt")
    p.write_text("Hello, World!")   # 写入文本
    p.write_bytes(b"Binary data")   # 写入二进制数据
    # 写入文件时指定编码
    p.write_text("你好,世界", encoding="gbk") # 写入文件时指定字符编码
    
    # 读取文件
    print(p.read_text())            # 读取文本
    print(p.read_bytes())           # 读取二进制数据
    # 读取文件时指定编码
    content = p.read_text(encoding="gbk") # 读取文件时指定字符编码
    print(content)
    
  4. 文件系统操作

    # 重命名
    p = Path("example.txt")
    p.rename("new_example.txt")
    
    # 复制(需要 shutil 模块)
    from shutil import copy
    copy("source.txt", "destination.txt")
    
    # 当目标文件不存在则重命名文件,当目标文件存在则覆盖目标文件,且无提示
    p.replace("new_location.txt")
    # 将文件移动到 /new/path/ 下
    p = Path("example.txt")
    p.replace("/new/path/example.txt")  
    

四.与 osos.path 的对比

功能os / os.pathpathlib
路径操作字符串操作,需手动拼接面向对象,直接使用 / 操作符
平台兼容性手动处理分隔符(os.sep自动处理分隔符
文件和目录检查os.path.exists()Path.exists()
创建目录或文件os.mkdir()Path.mkdir()Path.touch()
文件读写open()Path.write_text() / read_text()/write_bytes()/read_bytes()

六.常见的应用案例:

  1. 批量处理文件

    from pathlib import Path
    
    # 获取当前目录下的所有 .txt 文件
    current_dir = Path(".")
    for file in current_dir.glob("*.txt"):
        print(file.name)
    
  2. 创建层级目录

    from pathlib import Path
    
    # 创建嵌套目录
    nested_dir = Path("project") / "src" / "tests"
    nested_dir.mkdir(parents=True, exist_ok=True)
    
  3. 自动备份文件

    from pathlib import Path
    
    file_path = Path("example.txt")
    
    if file_path.exists():
        backup_path = file_path.with_suffix(".bak")
        file_path.rename(backup_path)
        print(f"Backup created: {backup_path}")
    

七.总结

我记得我之前写文件读写等操作我写了9节,而Python pathlib库来操作文件是不是更简单,因为把文件变为一个对象来进行操作,但是要注意 想使用pathlib,python版本必须为3.4以上!

创作整理不易,请大家多多关注 多多点赞,有写的不对的地方欢迎大家补充,我来整理,再次感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SEEONTIME

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值