2011-07-09 155 views
0

我試圖改變我的目錄和文件內的所有標籤。目前該系統是「082411-SomeNameHere」(mmddyy-Title),我想將其更改爲「110824-SomeNameHere」。在Python中更改目錄名稱

我知道移動的數字是相當簡單的,但我大多不確定如何訪問目錄中的名稱並將其全部更改。

對此提出建議?

回答

1

試試這個:

import os, re, shutil 

r = re.compile(r'^([0-9]{2})([0-9]{2})([0-9]{2})-(.*)$') 

for root, dirs, files in os.walk('/path/to/topdir'): 
    for filename in files: 
     match = r.match(filename) 
     if match: 
      newfilename = match.group(3) + match.group(1) + match.group(2) + '-' + match.group(4) 
      newfilename = os.path.join(root, newfilename) 
      oldfilename = os.path.join(root, filename) 

      # Rename oldfilename to newfilename 
      shutil.move(oldfilename, newfilename) 

這基本上橫貫使用os.walk的目錄結構,尋找那些看起來有舊的命名約定文件,提取部分出來,確實有shutil.move重命名。

+0

爲了更快速+1:D – bernie

+0

我只是因爲我對它的理解更好而去過這個。亞當的代碼可能會更快 - 但對我來說有點不太合適。儘管我從Adam的代碼中偷了「os.walk(os.curdir)」。 這是一個巨大的幫助,謝謝你!一個小問題雖然 - 這改變了所有文件夾的內容,而不是父目錄文件夾名稱。 例如:我有文件夾061411-名稱,然後在它裏面改爲110614-FileA。 – JStat

0

您想要os.walk用於目錄和文件遍歷。
您可以使用shutil.move進行文件重命名。

import os 
import shutil 
for dirpath, dirs, files in os.walk(os.curdir): 
    for filename in files: 
     shutil.move(# alternative: `os.rename` 
       os.path.join(dirpath, filename), 
       os.path.join(dirpath, filename_with_changes), 
      ) 

「......這些數字的運動是相當簡單」,所以我留給你:d
歡迎StackOverflow上。