如何从文件路径中删除子目录名

2024-06-01 04:20:25 发布

您现在位置:Python中文网/ 问答频道 /正文

dirpath变量指向一个目录,其中有两个子文件夹都名为“Temp”:

dirpath='C:/Users/Temp/AppData/Local/Temp'

另一个变量word存储需要从dirpath中删除的目录名 但仅当它是最后一个子文件夹时:

word='temp'

所以最终结果应该是:

result='C:/Users/Temp/AppData/Local'

请注意dirpath中的“Temp”以大写字母开头。而word变量用小写形式定义“temp”。最终结果应该保留dirpath变量中使用的原始大写字符。你知道吗

如何用最少的代码实现这一点?你知道吗


Tags: 目录文件夹localresult大写字母usersappdatatemp
3条回答

使用正则表达式模块re

import re
dirpath = 'C:/Users/Temp/AppData/Local/Temp'
word = 'temp'

if re.search("/%s$"%word, dirpath.lower()):
    dirpath = dirpath[:-len(word)] 

print dirpath

也许你把这个和第一个答案结合起来,我对os模块不太在行

您应该尝试使用"os" module。你知道吗

特别是以下两个功能:

你知道吗操作系统路径连接()和操作系统路径拆分()

如果你使用操作系统路径拆分()然后您可以使用操作系统路径当删除列表的最后一个组件时,join获取最终路径。在你的情况下,第一次分开会给你想要的。你知道吗

>>> import os
>>> dirpath='C:/Users/Temp/AppData/Local/Temp'
>>> dirpath
'C:/Users/Temp/AppData/Local/Temp'
>>> os.path.split(dirpath)
('C:/Users/Temp/AppData/Local', 'Temp')
>>> result = os.path.split(dirpath)
>>> result[0]
'C:/Users/Temp/AppData/Local'
>>> 
dirpath='C:/Users/Temp/AppData/Local/Temp'
word='temp'

if dirpath.lower().endswith(word.lower()):
    dirpath=dirpath[:-(len(word)+1)]

相关问题 更多 >