一、路径处理模块pathlib
路径处理模块pathlib是Python 3.4版本后引入的标准库,用于处理不同操作系统下的文件路径。
二、pathlib的常用方法
获取当前工作目录的路径:Path.cwd()
import pathlib
from pathlib import Path
# Path.cwd():获取当前工作目录的Path对象。
current_path = Path.cwd()
print(current_path) #输出结果:E:\pythonProject\web_UI\数据逻辑
获取绝对路径: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)
获取根路径: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)
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
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
Path.is_file():判断路径是否是一个文件。
Path.is_file()方法用于判断一个路径是否是一个文件,如果是则返回True,否则返回False。
from pathlib import Path
p = Path('zqw.txt')
print(p.is_file()) # True
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.")
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!
Path.mkdir():创建目录
#当前路径下创建目录
p = Path("mydir")
p.mkdir()
#若该路径下已经存在同名的目录,则会抛出一个 FileExistsError 异常。
p = Path("mydir")
p.mkdir(exist_ok=True)
Path.rmdir():删除目录
from pathlib import Path
p = Path("mydir")
p.rmdir()
Path.rmdir() 方法用于删除目录,但前提是该目录必须为空目录,否则会抛出OSError异常。
Path.touch():创建文件
Path.touch() 方法用于创建一个空文件,如果文件已经存在则更新文件的修改时间。
from pathlib import Path
path = Path("example.txt")
path.touch()
Path.unlink():删除文件
Path.unlink()方法用于删除文件。调用该方法会直接删除指定路径下的文件,如果路径下不存在该文件,则会抛出FileNotFoundError异常。
from pathlib import Path
p = Path('zqw.txt')
p.unlink() # 删除文件
#删除一个不存在的文件,会抛出FileNotFoundError
p = Path('no.txt')
p.unlink()
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 的文件。
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
Path.parts:获取路径的各个部分,返回一个元组。
from pathlib import Path
path = Path('/Users/username/Documents/test.txt')
print(path.parts) #输出结果:('/', 'Users', 'username', 'Documents', 'test.txt')
Path.parent:获取路径的父路径
from pathlib import Path
path = Path('/Users/john/Documents/file.txt')
parent_path = path.parent
print(parent_path) #输出结果:/Users/john/Documents
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
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
Path.suffix:获取路径的后缀名。
from pathlib import Path
p = Path('example.txt')
print(p.suffix) #输出结果:.txt
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
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")
文章出处登录后可见!