目录
p.open(mode='r', buffering=- 1, encoding=None, errors=None, newline=None)
p.mkdir(mode=511, parents=False, exist_ok=False)
p.touch(mode=438, exist_ok=True)
p.symlink_to(target, target_is_directory=False)
下述方法,基于pathlib.PurePath、pathlib.Path函数模块。
1. 路径访问
p.open(mode='r', buffering=- 1, encoding=None, errors=None, newline=None)
打开路径指向的文件, 参见文件1:打开文件-open函数实操 。
p = Path('D:\\PycharmProject\\测试文件\\test1.txt')
p.open()
<_io.TextIOWrapper name='D:\\PycharmProject\\测试文件\\test1.txt' mode='r' encoding='cp936'>
f = p.open()
f.read()
'test1x\nAAAAAAAAAAAA'
2. 路径创建
p.mkdir(mode=511, parents=False, exist_ok=False)
将路径 p 创建为新目录;
如 p 路径的父路径未创建,则 parents=False 时,创建失败;parents=True 时,依次创建所有未被创建的父路径;
如该路径已经存在,则 exist_ok=False 时,创建失败报错;exist_ok=True 时,不报错,已存在路径不修改。
#将路径 p 创建为新目录
p = Path('D:\\PycharmProject\\测试文件\\二级测试文件夹\\新建文件夹')
p.mkdir()
p2 = Path('D:\\PycharmProject\\测试文件\\二级测试文件夹')
list(p2.iterdir())
[WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/test11.txt'), WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/新建文件夹')]
#如 p 路径的父路径未创建,则 parents=False 时,创建失败
p = Path('D:\\PycharmProject\\测试文件\\二级测试文件夹\\三级文件夹\\四级文件夹\\新建文件夹')
p.mkdir()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "D:\Anaconda\lib\pathlib.py", line 1323, in mkdir
self._accessor.mkdir(self, mode)
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'D:\\PycharmProject\\测试文件\\二级测试文件夹\\三级文件夹\\四级文件夹\\新建文件夹'
#如 p 路径的父路径未创建,则 parents=True 时,依次创建所有未被创建的父路径
p.mkdir(parents = True)
list(p2.glob('**'))
[WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹'), WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/三级文件夹'), WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/三级文件夹/四级文件夹'), WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/三级文件夹/四级文件夹/新建文件夹'), WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/新建文件夹')]
#如该路径已经存在,则 exist_ok=False 时,创建失败报错
p = Path('D:\\PycharmProject\\测试文件\\二级测试文件夹\\新建文件夹')
p.mkdir()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "D:\Anaconda\lib\pathlib.py", line 1323, in mkdir
self._accessor.mkdir(self, mode)
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'D:\\PycharmProject\\测试文件\\二级测试文件夹\\新建文件夹'
#如该路径已经存在,则 exist_ok=True 时,不报错,已存在路径不修改
p2 = Path('D:\\PycharmProject\\测试文件\\二级测试文件夹\\新建文件夹\\test.txt')
p2.touch()
list(p.glob('**'))
[WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/新建文件夹')]
list(p.glob('**/*.*'))
[WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/新建文件夹/test.txt')]
p.mkdir(exist_ok = True)
list(p.glob('**'))
[WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/新建文件夹')]
list(p.glob('**/*.*'))
[WindowsPath('D:/PycharmProject/测试文件/二级测试文件夹/新建文件夹/test.txt')]
p.touch(mode=438, exist_ok=True)
将路径 p 创建为文件;
如果路径 p 文件已存在,则当 exist_ok=True(默认情况),则不报错,已存在文件不修改;
如果路径 p 文件已存在,则当 exist_ok=False 时,创建失败,返回 FileExistsError 异常;
如果指定了 mode 参数,它将与当前进程的 umask 值合并以确定文件的模式和访问标志。
#将路径 p 创建为文件;
p = Path('D:\\PycharmProject\\测试文件\\test0.txt')
p.read_text()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "D:\Anaconda\lib\pathlib.py", line 1266, in read_text
with self.open(mode='r', encoding=encoding, errors=errors) as f:
File "D:\Anaconda\lib\pathlib.py", line 1252, in open
return io.open(self, mode, buffering, encoding, errors, newline,
File "D:\Anaconda\lib\pathlib.py", line 1120, in _opener
return self._accessor.open(self, flags, mode)
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\PycharmProject\\测试文件\\test0.txt'
p.touch()
p.read_text()
''
#如果路径 p 文件已存在,则当 exist_ok=True(默认情况),则不报错,已存在文件不修改
p = Path('D:\\PycharmProject\\测试文件\\test1.txt')
p.read_text()
'test1x\nAAAAAAAAAAAA'
p.touch()
p.read_text()
'test1x\nAAAAAAAAAAAA'
#如果路径 p 文件已存在,则当 exist_ok=False 时,创建失败,返回 FileExistsError 异常
p.touch(exist_ok=False)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "D:\Anaconda\lib\pathlib.py", line 1315, in touch
fd = self._raw_open(flags, mode)
File "D:\Anaconda\lib\pathlib.py", line 1127, in _raw_open
return self._accessor.open(self, flags, mode)
FileExistsError: [Errno 17] File exists: 'D:\\PycharmProject\\测试文件\\test1.txt'
3. 路径链接
p.symlink_to(target, target_is_directory=False)
将该路径创建为指向 target 参数指定的符号链接;
在 Windows 下,如果链接的目标是一个目录则 target_is_directory 参数必须为 True(默认为 False);
在 POSIX 下,target_is_directory 的值将被忽略。
p.hardlink_to(target)
将该路径设置为一个指向与 target 参数相同文件的硬链接。

本文介绍了Python的pathlib模块,包括路径访问、创建及链接的方法。重点讲解了p.open()用于文件访问,p.mkdir()和p.touch()用于路径创建,以及p.symlink_to()和p.hardlink_to()用于创建链接。通过这些方法,可以方便地管理文件系统中的路径和文件。

835

被折叠的 条评论
为什么被折叠?



