如何使用Python重命名目录中的所有文件和子文件夹

时间:2016-03-15 18:40:01

标签: python regex

我正在使用一本关于Python的书来做一个小项目。他们展示的一个例子是如何重命名根文件夹下的所有文件和目录,但我想更进一步,更改子目录中的文件。

我认为使用os.walk是我最好的选择,但我只能更改文件名而不是子目录。我还希望在浏览os.walk时更改子目录名称。

我正在使用书籍和在线资源来完成此任务,任何帮助都会很棒。

以下是我现在基于这本书的内容。我试图包含os.listdir,但正则表达式不会那样。

import shutil, os, re #regex that matches files with dates wrongFormat = re.compile(r"""^(.*?) ((0|1)?\d). ((0|1|2|3)?\d). ((19|20)\d\d) (.*?)$ """, re.VERBOSE) #Loop over the files in the working directory path = '.' for path, dirs, files in os.walk(path, topdown=True): for incorrectDt in files: dt = wrongFormat.search(incorrectDt) #Skip file without a date if dt == None: continue #Split filename into parts beforePart = dt.group(1) monthPart = dt.group(2) dayPart = dt.group(4) yearPart = dt.group(6) afterPart = dt.group(8) #Form the new date format correctFormat = beforePart + monthPart + "_" + dayPart + "_" + yearPart + afterPart #Get full, absolute file paths. absWorkingDir = os.path.abspath(path) incorrectDt= os.path.join(absWorkingDir, incorrectDt) correctFormat = os.path.join(absWorkingDir, correctFormat) #rename files print ('Renaming "%s" to "%s"...' % (wrongFormat, correctFormat)) shutil.move(incorrectDt, correctFormat)

0 个答案:

没有答案