文件14:文件路径-创建访问链接方法

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

目录

1. 路径访问

p.open(mode='r', buffering=- 1, encoding=None, errors=None, newline=None)  

2. 路径创建

p.mkdir(mode=511, parents=False, exist_ok=False) 

p.touch(mode=438, exist_ok=True)  

3. 路径链接


下述方法,基于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. 路径链接

将该路径创建为指向 target 参数指定的符号链接;  

在 Windows 下,如果链接的目标是一个目录则 target_is_directory 参数必须为 True(默认为 False);

在 POSIX 下,target_is_directory 的值将被忽略。  

将该路径设置为一个指向与 target 参数相同文件的硬链接。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃烧的火鸟啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值