【发布时间】:2019-08-19 19:06:06
【问题描述】:
我想在给定文件路径的中间插入一个目录名,如下所示:
directory_name = 'new_dir'
file_path0 = 'dir1/dir2/dir3/dir4/file.txt'
file_path1 = some_func(file_path0, directory_name, position=2)
print(file_path1)
>>> 'dir1/dir2/new_dir/dir3/dir4/file.txt'
我查看了 os.path 和 pathlib 包,但看起来它们没有允许在文件路径中间插入的功能。我试过了:
import sys,os
from os.path import join
path_ = file_path0.split(os.sep)
path_.insert(2, 'new_dir')
print(join(path_))
但这会导致错误
“预期的 str、字节或 os.PathLike 对象,而不是列表”
有谁知道允许在文件路径中间插入的标准 python 函数?或者-我如何将path_ 转换为os.path 可以处理的东西。我是 pathlib 的新手,所以也许我错过了一些东西
编辑:根据问题的答案,我可以提出以下解决方案:
1.) 正如 Zach Favakeh 所建议和在this answer 中所写的那样,只需使用“splat”运算符* 将我上面的代码更正为join(*path_),一切都解决了。
2.) 根据 buran 的建议,您可以使用 pathlib 包,简而言之,它会导致:
from pathlib import PurePath
path_list = list(PurePath(file_path0).parts)
path_list.insert(2, 'new_dir')
file_path1 = PurePath('').joinpath(*path_list)
print(file_path1)
>>> 'dir1/dir2/new_dir/dir3/dir4/file.txt'
【问题讨论】:
-
我认为这与您的问题没有直接关系,但仅供参考:您无需导入 numpy 即可将值插入列表。
my_list.insert(index, value)可以单独使用。 -
@Kevin 感谢您的评论,它不会改变结果,但使用您更简单的建议更有意义,所以我更正了我的代码
标签: python path filepath os.path