如何从filepath中删除子目录名称

时间:2014-07-16 17:22:38

标签: 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变量中使用的原始大写字符。

如何用最少的代码实现这一目标?

3 个答案:

答案 0 :(得分:2)

您应该尝试使用"os" module

特别是以下两个功能:

os.path.join()和os.path.split()

如果使用os.path.split(),则可以在删除列表的最后一个组件时使用os.path 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'
>>> 

答案 1 :(得分:0)

使用正则表达式模块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 - 模块

并不是那么好

答案 2 :(得分:0)

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

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