文件和目录

filesys

2022-03-29

函数

os 和 pathlib 模块对应

[[pathlib]]

解析文件

1
from pathlib import Path
2
3
# 文件地址(文件必须存在)
4
p = Path.cwd() / 'test.txt'
5
# 写入
6
p.write_text('Hello World') # 返回 11
7
# 读取
8
p.read_text() # 返回 'Hello World

获取路径

路径

1
os.getcwd() # '/Users/immwind/Desktop'
2
Path.cwd() # PosixPath('/Users/immwind/Desktop')

路径和文件名

os 为旧写法

1
import os
2
from pathlib import Path
3
4
os.path.abspath(__file__)
5
os.path.realpath(__file__)
6
Path(__file__).resolve() # 路径绝对化
7
8
# 返回包含文件名的完整路径
9
# /Users/immwind/Desktop/test.py

获取指定层级路径

1
from pathlib import Path
2
p = Path.cwd()
3
p.parts
4
# 以元组形式返回所在目录的文件夹名
5
# ('/', 'Users', 'immwind', 'Developer')
6
7
# 获取指定文件的的父目录名(完整路径的情况下)
8
p = Path.cwd() / 'hello.py'
9
# 返回 PosixPath('/Users/immwind/Developer/hello.py')
10
p.parent.name
11
# 返回 'Developer'
12
13
# 如果最后一级已经是目录,则直接使用 name 就好
14
p.name

路径处理

1
from os import path
2
from pathlib iport Path
3
4
# 路径拼接文件名,可多层级
5
path.join(os.getcwd(), 'file', 'img.png')
6
# 返回 '/Users/immwind/Desktop/file/img.png'
7
8
Path.cwd() / 'file' / 'img.png'
9
Path.cwd().joinpath('file', 'img.png')
10
# 均返回 PosixPath('/Users/immwind/Desktop/file/img.png')

上面两种方式均不支持文件名加后缀的拼接,只能是多个路径加完整文件名

增加后缀

1
from pathlib iport Path
2
3
# with_suffix 会替换原有后缀
4
(Path.cwd() / 'folder' / 'file_name').with_suffix('.jpg')
5
6
# 返回PosixPath('/Users/immwind/Desktop/folder/file_name.jpg')