说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在处理文件和目录时,路径操作是不可避免的一部分。Python 提供了多种方法来处理路径,其中 pathlib 库以其面向对象的设计和直观的接口赢得了广泛的认可。pathlib 引入于 Python 3.4,提供了更高层次的路径操作抽象,使得路径处理更加简洁和强大。
下面是一个综合示例,演示了如何使用 pathlib 处理路径和文件系统操作:
from pathlib import Path
# 创建一个 Path 对象
p = Path('/home/user/example')
# 检查路径是否存在
if not p.exists():
# 创建目录
p.mkdir(parents=True)
# 创建一个文件并写入内容
file_path = p / 'sample.txt'
file_path.write_text('This is a sample file.')
# 读取文件内容
content = file_path.read_text()
print('File content:', content)
# 遍历目录中的所有文件和子目录
for item in p.iterdir():
print('Item:', item)
# 使用 glob 模式匹配文件
for txt_file in p.glob('*.txt'):
print('Text file:', txt_file)
# 修改文件的后缀
new_file_path = file_path.with_suffix('.md')
file_path.rename(new_file_path)
print('Renamed file:', new_file_path)
# 删除文件和目录
new_file_path.unlink()
p.rmdir()
在这个示例中,我们首先创建了一个路径对象,然后检查该路径是否存在。如果不存在,我们创建一个目录。接着,我们创建一个文件并写入内容,然后读取该文件的内容并打印出来。我们还遍历了目录中的所有文件和子目录,并使用 glob 模式匹配文件。最后,我们修改了文件的后缀,并删除了文件和目录。
pathlib 库包含两个主要的路径类:
pathlib 提供了丰富的属性和方法来操作路径:
路径属性:
路径操作:
joinpath(*other)
:连接路径。路径转换:
文件和目录操作:
文件读写:
遍历目录:
这些是pathlib.Path类的一些常用方法,它们提供了丰富的功能来操作文件和目录路径。通过使用这些方法,可以方便地进行文件和目录的创建、删除、重命名、读取、写入等操作,以及处理路径的各种属性和关系。
方法 | 功能 |
---|---|
exists() |
判断路径是否存在。如果路径指向的文件或目录存在,则返回True;否则返回False。 |
is_file() |
判断路径是否指向一个文件。如果路径存在且是一个文件,则返回True;否则返回False。 |
is_dir() |
判断路径是否指向一个目录。如果路径存在且是一个目录,则返回True;否则返回False。 |
iterdir() |
当路径指向一个目录时,生成该目录下的对象的路径。返回一个迭代器,迭代器中的每个元素都是一个Path对象,表示目录中的一个文件或子目录。 |
glob() |
解析相对于当前路径的通配符模式,生成所有匹配的文件路径。通配符模式与fnmatch模块中的模式相同,并且支持** 表示递归匹配子目录。 |
rglob() |
与glob方法类似,但它会递归地匹配所有子目录中的文件。 |
read_text() |
以字符串形式返回路径指向的文件的解码后文本内容。 |
read_bytes() |
以字节对象的形式返回路径指向的文件的二进制内容。 |
write_text() |
将文本数据写入路径指向的文件中。如果文件不存在,则创建该文件;如果文件已存在,则覆盖原有内容。 |
write_bytes() |
将二进制数据写入路径指向的文件中。如果文件不存在,则创建该文件;如果文件已存在,则覆盖原有内容。 |
open() |
打开路径指向的文件,就像内置的open函数所做的一样。返回一个文件对象,可以用于读取或写入文件内容。 |
rename() |
将文件或目录重命名为指定的目标路径。如果目标路径已存在,则根据具体情况可能会抛出异常。 |
replace() |
与rename方法类似,但如果目标路径已存在,则会无条件地替换它。 |
unlink() |
删除文件或符号链接。如果路径指向的是目录,则使用rmdir方法删除。 |
rmdir() |
删除空目录。如果目录不为空,则会抛出异常。 |
mkdir() |
创建新目录。可以指定目录的权限和是否创建父目录。 |
symlink_to() |
创建符号链接,使当前路径成为指向目标路径的符号链接。 |
hardlink_to() |
创建硬链接,将当前路径设置为指向与目标路径相同文件的硬链接。 |
absolute() |
将路径转换为绝对路径,但不会执行正规化或解析符号链接。 |
resolve() |
将路径绝对化,并解析任何符号链接。返回一个新的Path对象,表示解析后的绝对路径。 |
parent() |
返回路径的父路径。 |
parents() |
返回一个不可变序列,其中包含路径的所有父路径。 |
name() |
返回路径的最后一个组件,即文件名或目录名。 |
suffix() |
返回文件扩展名,如果没有扩展名则返回空字符串。 |
stem() |
返回文件名或目录名,不包括扩展名。 |
with_name() |
返回一个新的Path对象,其中文件名被替换为指定的名称。如果原始路径没有文件名,则会抛出异常。 |
with_stem() |
返回一个新的Path对象,其中文件名的主干部分被替换为指定的名称。如果原始路径没有文件名,则会抛出异常。 |
with_suffix() |
返回一个新的Path对象,其中文件扩展名被替换为指定的扩展名。如果原始路径没有扩展名,则会将指定的扩展名添加到文件名后面。 |
is_absolute() |
判断路径是否为绝对路径。如果路径以根目录或驱动器盘符开头,则为绝对路径;否则为相对路径。 |
is_relative_to() |
判断路径是否相对于另一个路径。如果当前路径是另一个路径的子路径或与另一个路径相同,则返回True;否则返回False。 |
更新时间:2024-06-23 17:15:51 标签:python 内置库 路径