Python pathlib 模块,路径属性与处理方法

文摘   科技   2025-01-14 12:11   上海  
点击蓝字,关注山海摸鱼人

pathlib 模块简介

pathlib 模块是Python标准库的一部分,从Python 3.4版本开始引入。它提供了一组面向对象的类来表示文件系统路径,将文件路径视为对象进行操作,大大提高了代码的可读性和可维护性。

在使用 pathlib 模块之前,我们需要先导入它。最常用的类是 Path,它代表一个文件系统路径。

from pathlib import Path  # 从pathlib模块导入Path类

Path类的路径属性

name属性name 属性用于获取文件或目录的名称,包括文件扩展名。

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
file_name = file_path.name
print(f"文件名称: {file_name}")

输出结果

文件名称: test.txt

stem属性stem 属性返回文件或目录名称,不包含文件扩展名。

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
file_stem = file_path.stem
print(f"文件名称(不包含扩展名): {file_stem}")

输出结果

文件名称(不包含扩展名): test

suffix属性suffix 属性用于获取文件的扩展名,包括点号(.)。如果是目录,该属性返回空字符串。

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
file_suffix = file_path.suffix
print(f"文件扩展名: {file_suffix}")

dir_path = Path('C:/Users/山海摸鱼人/Documents')
dir_suffix = dir_path.suffix
print(f"目录扩展名: {dir_suffix}")

输出结果

文件扩展名:.txt
目录扩展名:

parent属性parent 属性返回路径的父目录。如果路径是根目录,parent 属性返回 None

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
parent_dir = file_path.parent
print(f"文件的父目录: {parent_dir}")

root_path = Path('/')
root_parent = root_path.parent
print(f"根目录的父目录: {root_parent}")

输出结果

文件的父目录: C:\Users\山海摸鱼人\Documents
根目录的父目录: \

Path类的路径处理方法

absolute() 方法absolute() 方法用于获取路径的绝对路径。

from pathlib import Path

rel_path = Path('test.txt')
abs_path = rel_path.absolute()
print(f"相对路径 {rel_path} 的绝对路径是: {abs_path}")

输出结果(假设当前工作目录为 C:\Users\山海摸鱼人\workspace)

相对路径 test.txt 的绝对路径是: C:\Users\山海摸鱼人\workspace\test.txt

with_suffix()方法with_suffix() 方法用于修改文件的扩展名。

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
new_file_path = file_path.with_suffix('.pdf')
print(f"修改扩展名后的路径: {new_file_path}")

输出结果

修改扩展名后的路径: C:/Users/山海摸鱼人/Documents/test.pdf

with_stem()方法with_stem() 方法用于修改文件或目录的名称(不包含扩展名)。(需python 3.9及以上版本)

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
new_file_path = file_path.with_stem('new_test')
print(f"修改名称(不包含扩展名)后的路径: {new_file_path}")

输出结果

修改名称(不包含扩展名)后的路径: C:/Users/山海摸鱼人/Documents/new_test.txt

with_name()方法with_name() 方法用于修改文件或目录的完整名称。

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
new_file_path = file_path.with_name('new_file.pdf')
print(f"修改完整名称后的路径: {new_file_path}")

输出结果

修改完整名称后的路径: C:/Users/山海摸鱼人/Documents/new_file.pdf

rename()方法rename() 方法用于重命名文件或目录。

from pathlib import Path

old_file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
new_file_path = Path('C:/Users/山海摸鱼人/Documents/new_test.txt')
old_file_path.rename(new_file_path)
print(f"文件已重命名为: {new_file_path}")

输出结果(假设文件存在且可重命名)

文件已重命名为: C:/Users/山海摸鱼人/Documents/new_test.txt

iterdir()方法iterdir() 方法用于遍历目录下的所有子项(文件和子目录),返回一个迭代器。(不向下递归)

from pathlib import Path

dir_path = Path('C:/Users/山海摸鱼人/Documents')
for entry in dir_path.iterdir():
    if entry.is_file():
        print(f"文件: {entry}")
    elif entry.is_dir():
        print(f"子目录: {entry}")

输出结果(假设目录下有文件和子目录)

文件: C:/Users/山海摸鱼人/Documents/test.txt
子目录: C:/Users/山海摸鱼人/Documents/sub_dir

unlink()方法unlink() 方法用于删除文件。如果路径指向目录,需要使用 rmdir() 方法删除空目录,或者使用 shutil.rmtree() 方法删除非空目录。

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
if file_path.exists() and file_path.is_file():
    file_path.unlink()
    print(f"文件 {file_path} 已被删除")

输出结果(假设文件存在)

文件 C:/Users/山海摸鱼人/Documents/test.txt 已被删除

stat()方法stat() 方法用于获取文件或目录的状态信息,如文件大小、修改时间等。

from pathlib import Path

file_path = Path('C:/Users/山海摸鱼人/Documents/test.txt')
file_stat = file_path.stat()
print(f"文件大小: {file_stat.st_size} 字节")
print(f"最后修改时间: {file_stat.st_mtime}")

输出结果(假设文件存在)

文件大小: 1024 字节(假设)
最后修改时间: 1612345678.90(假设的时间戳)

本文介绍了 pathlib 模块中 Path 类的各种属性和方法,包括 namestemsuffixparentabsolute()with_suffix()with_stem()with_name()rename()iterdir()unlink() 和 stat()

相关阅读:Python pathlib 模块,遍历目录

山海摸鱼人
致力于记录美好之瞬间,追寻美好之明天。
 最新文章