gpt4 book ai didi

Python:更改路径的部分(单个目录名称)

转载 作者:行者123 更新时间:2023-12-01 05:20:47 24 4
gpt4 key购买 nike

更改路径中的单个目录名称(仅第一次出现)的最佳方法是什么?

示例:

source_path = "/path/to/a/directory/or/file.txt"
target_path = "/path/to/different/directory/or/file.txt"

在这种情况下,指令将是:“将名称为“a”的第一个目录替换为名称为“difference”的目录”

我可以想到首先将路径分成各个部分的方法,然后找到第一个“a”,替换它并再次连接它。但我想知道是否有更优雅的方法来处理这个问题。也许是一个内置的 python 函数。

最佳答案

有一个函数叫 os.path.split这可以将一条路径分成最后一部分以及所有通向它的路径,但这是您将获得的最接近的路径。因此,我们能做的最优雅的事情就是创建一个连续调用该函数的函数:

import os, sys 
def splitall(path):
allparts = []
while 1:
parts = os.path.split(path)
if parts[0] == path: # sentinel for absolute paths
allparts.insert(0, parts[0])
break
elif parts[1] == path: # sentinel for relative paths
allparts.insert(0, parts[1])
break
else:
path = parts[0]
allparts.insert(0, parts[1])
return allparts

然后你可以像这样使用它,用os.path.join重新连接起来:

>>> source_path = '/path/to/a/directory/or/file'
>>> temp = splitall(source_path)
>>> temp
['path', 'to', 'a', 'directory', 'or', 'file']
>>> temp[2] = 'different'
>>> target_path = os.path.join(*temp)
>>> target_path
'path/to/different/directory/or/file'

关于Python:更改路径的部分(单个目录名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com