从 Python 中的路径中删除第一个文件夹
从路径中删除第一个文件夹:
- 使用 pathlib.Path 类创建路径对象。
- 使用 relative_to() 方法删除第一个文件夹。
from pathlib import Path
absolute_path = '/Users/zadmei/workspace/python/main.py'
a_path = Path(absolute_path)
result = a_path.relative_to(*a_path.parts[:2])
print(result) # ?️ jiyik/workspace/python/main.py
pathlib.Path 类用于根据您的操作系统创建 PosixPath 或 WindowsPath 对象。
PurePath.relative_to() 方法返回到由提供的参数标识的另一个路径的相对路径。
from pathlib import Path
absolute_path = '/Users/zadmei/workspace/python/main.py'
a_path = Path(absolute_path)
# ?️ zadmei/workspace/python/main.py
print(str(a_path.relative_to('/home')))
PurePath.parts 属性返回一个包含路径组件的元组。
from pathlib import Path
absolute_path = '/Users/zadmei/workspace/python/main.py'
a_path = Path(absolute_path)
# ?️ ('/', 'Users', 'zadmei', 'workspace', 'python', 'main.py')
print(a_path.parts)
print(a_path.parts[:2]) # ?️ ('/', 'Users')
要从路径中删除第一个文件夹,我们将路径的前两个组件传递给 relative_to() 方法。
from pathlib import Path
absolute_path = '/Users/zadmei/workspace/python/main.py'
a_path = Path(absolute_path)
result = a_path.relative_to(*a_path.parts[:2])
print(result) # ?️ zadmei/workspace/python/main.py
切片 my_tuple[:2] 从索引 0 开始并上升到但不包括索引 2。
换句话说,切片返回元组的前两个元素。
* 可迭代解包运算符使我们能够在函数调用、推导式和生成器表达式中解包可迭代对象。
example = (*(1, 2), 3)
# ?️ (1, 2, 3)
print(example)
或者,我们可以在分隔符上拆分路径。
使用 os.path.join() 从路径中删除第一个文件夹
从路径中删除第一个文件夹:
- 使用 str.split() 方法在每个分隔符上拆分路径。
- 使用列表切片选择从索引 2 开始的列表元素。
- 使用 os.path.join() 方法将列表的其余部分连接成一个字符串。
import os
absolute_path = '/Users/zadmei/workspace/python/main.py'
result = os.path.join(*(absolute_path.split(os.path.sep)[2:]))
print(result) # ?️ zadmei/workspace/python/main.py
os.sep 属性返回操作系统用来分隔路径名组件的字符。
import os
print(os.path.sep) # ?️ '/'
分隔符对于 POSIX 是 /,对于 Windows 是 \\。
我们使用 str.split() 方法在每次出现分隔符时拆分路径。
import os
absolute_path = '/Users/zadmei/workspace/python/main.py'
# ?️ ['', 'Users', 'zadmei', 'workspace', 'python', 'main.py']
print(absolute_path.split(os.path.sep))
# ?️ ['zadmei', 'workspace', 'python', 'main.py']
print(absolute_path.split(os.path.sep)[2:])
最后一步是在调用 os.path.join() 方法时解压从索引 2 开始的列表项。
import os
absolute_path = '/Users/zadmei/workspace/python/main.py'
result = os.path.join(*(absolute_path.split(os.path.sep)[2:]))
print(result) # ?️ zadmei/workspace/python/main.py
切片 my_list[2:] 从索引 2 开始,一直到列表的末尾。
os.path.join 方法智能地连接一个或多个路径。
import os
# ?️ /Users/zadmei
print(os.path.join('/', 'Users', 'zadmei'))
如果提供的任何组件是绝对路径,则所有先前的组件都将被丢弃,并从绝对路径开始继续连接。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。