我試圖改變我的目錄和文件內的所有標籤。目前該系統是「082411-SomeNameHere」(mmddyy-Title),我想將其更改爲「110824-SomeNameHere」。在Python中更改目錄名稱
我知道移動的數字是相當簡單的,但我大多不確定如何訪問目錄中的名稱並將其全部更改。
對此提出建議?
我試圖改變我的目錄和文件內的所有標籤。目前該系統是「082411-SomeNameHere」(mmddyy-Title),我想將其更改爲「110824-SomeNameHere」。在Python中更改目錄名稱
我知道移動的數字是相當簡單的,但我大多不確定如何訪問目錄中的名稱並將其全部更改。
對此提出建議?
試試這個:
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
重命名。
您想要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上。
爲了更快速+1:D – bernie
我只是因爲我對它的理解更好而去過這個。亞當的代碼可能會更快 - 但對我來說有點不太合適。儘管我從Adam的代碼中偷了「os.walk(os.curdir)」。 這是一個巨大的幫助,謝謝你!一個小問題雖然 - 這改變了所有文件夾的內容,而不是父目錄文件夾名稱。 例如:我有文件夾061411-名稱,然後在它裏面改爲110614-FileA。 – JStat