python基础篇-路径处理模块pathlib

一、路径处理模块pathlib

路径处理模块pathlib是Python 3.4版本后引入的标准库,用于处理不同操作系统下的文件路径。

二、pathlib的常用方法

  1. 获取当前工作目录的路径:Path.cwd()

import pathlib
from pathlib import Path

# Path.cwd():获取当前工作目录的Path对象。
current_path = Path.cwd()
print(current_path)    #输出结果:E:\pythonProject\web_UI\数据逻辑

  1. 获取绝对路径:path.resolve()

from pathlib import Path

# 获取文件的绝对路径
file_path = Path("example.txt")
absolute_path = file_path.resolve()
print(absolute_path)

# 获取目录的绝对路径
dir_path = Path("example_dir")
absolute_path = dir_path.resolve()
print(absolute_path)

  1. 获取根路径:path.anchor

from pathlib import Path

# 获取文件的根路径
file_path = Path("example.txt")
root_path = file_path.anchor
print(root_path)

# 获取目录的根路径
dir_path = Path("/example_dir")
root_path = dir_path.anchor
print(root_path)

  1. Path.joinpath(other):连接路径。

other可以是字符串、Path对象或者是多个这样的参数。

from pathlib import Path
# 连接两个路径
path1 = Path('/home')
path2 = Path('user')
joined_path = path1.joinpath(path2)
print(joined_path)   #输出结果:\home\user
# 连接三个路径
path3 = Path('dir')
joined_path = path1.joinpath(path2, path3)
print(joined_path)  #输出结果:/home/user/dir
# 使用字符串连接路径
joined_path = path1.joinpath('user', 'dir')
print(joined_path)  #输出结果: /home/user/dir

  1. Path.is_absolute():判断路径是否是绝对路径。

Path.is_absolute() 方法是用来判断路径是否是绝对路径。如果是绝对路径,则返回 True,否则返回 False。

from pathlib import Path

# 创建一个相对路径
relative_path = Path("dir/file.txt")

# 创建一个绝对路径
absolute_path = Path("/home/user/dir/file.txt")

# 判断路径是否是绝对路径
print(relative_path.is_absolute())  # False
print(absolute_path.is_absolute())  # True

  1. Path.is_file():判断路径是否是一个文件。

Path.is_file()方法用于判断一个路径是否是一个文件,如果是则返回True,否则返回False。

from pathlib import Path

p = Path('zqw.txt')
print(p.is_file())  # True

  1. Path.is_dir():判断路径是否是一个目录。

from pathlib import Path

p = Path('/path/to/my/dir')
if p.is_dir():
    print(f"{p} is a directory.")
else:
    print(f"{p} is not a directory.")

  1. Path.exists():判断路径是否存在。

Path.exists() 方法可以用来判断一个路径是否存在,如果存在则返回 True,否则返回 False。

from pathlib import Path

file_path = Path('zqw.xlsx')
if file_path.exists():
    print(f'{file_path} exists!')
else:
    print(f'{file_path} does not exist.')

# 判断目录是否存在
dir_path = Path('file_1.py')
if dir_path.exists():
    print(f'{dir_path} exists!')
else:
    print(f'{dir_path} does not exist.')
输出结果:
zqw.xlsx exists!
file_1.py exists!

  1. Path.mkdir():创建目录

#当前路径下创建目录
p = Path("mydir")
p.mkdir()

#若该路径下已经存在同名的目录,则会抛出一个 FileExistsError 异常。
p = Path("mydir")
p.mkdir(exist_ok=True)

  1. Path.rmdir():删除目录

from pathlib import Path

p = Path("mydir")
p.rmdir()

Path.rmdir() 方法用于删除目录,但前提是该目录必须为空目录,否则会抛出OSError异常。

  1. Path.touch():创建文件

Path.touch() 方法用于创建一个空文件,如果文件已经存在则更新文件的修改时间。

from pathlib import Path

path = Path("example.txt")
path.touch()

  1. Path.unlink():删除文件

Path.unlink()方法用于删除文件。调用该方法会直接删除指定路径下的文件,如果路径下不存在该文件,则会抛出FileNotFoundError异常。

from pathlib import Path

p = Path('zqw.txt')
p.unlink()  # 删除文件

#删除一个不存在的文件,会抛出FileNotFoundError
p = Path('no.txt')
p.unlink()

  1. Path.glob(pattern):查找符合模式的路径。

Path.glob(pattern) 方法可以根据指定的模式匹配出符合条件的文件路径

from pathlib import Path

# 获取当前目录下所有文件
current_dir = Path('.')
for file_path in current_dir.glob('*'):
    print(file_path)

# 获取当前目录及其子目录下所有 py 文件
for file_path in current_dir.glob('**/*.py'):
    print(file_path)
‘*’ 表示匹配所有文件, ‘**’ 表示递归地匹配子目录。 *.py 表示匹配所有扩展名为 .py 的文件。

  1. Path.relative_to(other):获取相对于其他路径的相对路径。

from pathlib import Path

# 假设当前路径为 /home/user/myproject,other 为 /home/user
p = Path('/home/user/myproject')

# 获取相对于 /home/user 的相对路径
relative_path = p.relative_to('/home/user')
print(relative_path)  # 输出 myproject

  1. Path.parts:获取路径的各个部分,返回一个元组。

from pathlib import Path

path = Path('/Users/username/Documents/test.txt')
print(path.parts)   #输出结果:('/', 'Users', 'username', 'Documents', 'test.txt')

  1. Path.parent:获取路径的父路径

from pathlib import Path

path = Path('/Users/john/Documents/file.txt')
parent_path = path.parent

print(parent_path)   #输出结果:/Users/john/Documents

  1. Path.name:获取路径的文件名或者目录名

如果路径表示的是文件,则返回文件名(包括扩展名)

from pathlib import Path

p = Path('/path/to/file.txt')
print(p.name)  # 输出:file.txt

如果路径表示的是目录,则返回目录名

from pathlib import Path

p = Path('/path/to/directory')
print(p.name)  # 输出:directory

  1. Path.stem:获取路径的文件名或者目录名(不包含后缀)

可以使用Path.stem属性获取路径的文件名或目录名(不包含后缀)

from pathlib import Path

p = Path('/path/to/myfile.txt')
print(p.stem)  # 输出 myfile

如果路径最后一个部分没有扩展名,则返回整个最后一个部分作为文件名或目录名

from pathlib import Path

p = Path('/path/to/mydir')
print(p.stem)  # 输出 mydir

  1. Path.suffix:获取路径的后缀名。

from pathlib import Path

p = Path('example.txt')
print(p.suffix)   #输出结果:.txt

  1. Path.with_name(name):修改路径的文件名或者目录名。

from pathlib import Path

#修改文件名
path = Path('test.txt')
path.rename('new_test.txt')  # 将test.txt重命名为new_test.txt

#修改路径名
path = Path('/path/to/dir')
path.rename('/path/to/new_dir')  # 将dir重命名为new_dir

  1. Path.with_suffix(suffix):修改路径的后缀名。

修改路径的后缀名可以通过Path.with_suffix()方法来实现。该方法返回一个新的Path对象,表示修改后缀名后的路径。

from pathlib import Path

p = Path("example.txt")
new_p = p.with_suffix(".dat")
print(new_p)   #输出结果:example.dat

注意,with_suffix()方法不会修改原来的Path对象,而是返回一个新的对象,因为Path对象是不可变的。如果要将修改后的Path对象赋值给原来的变量,需要显式赋值

p = p.with_suffix(".dat")

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年11月14日
下一篇 2023年11月14日

相关推荐