我正在使用一本关于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)