2014-07-16 67 views
0

dirpath變量指向的目錄:如何從文件路徑有兩個子文件夾都命名爲「臨時」刪除子目錄名稱

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

另一個變量word商店,需要從dirpath刪除目錄的名稱 但只有當它是最後一個子文件夾:

word='temp' 

所以最終的結果應該是:

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

請注意dirpath中的「Temp」以大寫字母開頭。而word變量以小寫字母定義「temp」。最終結果應該保留dirpath變量中使用的原始大寫字符。

如何用最少的代碼實現這個?

回答

2

您應該嘗試使用"os" module

特別是以下兩個功能:

os.path.join()和os.path.split這樣的()

如果使用os.path.split這樣的(),那麼你可以使用操作系統.path連接以在刪除列表的最後一個組件時獲取最終路徑。在你的情況下,第一次分裂會給你你想要的。

>>> 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' 
>>> 
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 -module

+0

有一些方法好由'os.path'來處理。不需要正則表達式。 – cpburnz

+0

你是對的,但我承認我缺乏對最後一句中「os」方法的知識,並指出用戶有其他答案。 – Gregor

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

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

有'os.path'提供的方法可以處理這個。 – cpburnz

相關問題