如何在Python中搜索子目录以查找与模式匹配的文件?如果我手动更改目录并运行脚本,我可以这样做,但我想从这个树的根目录开始并运行脚本。我不能把它拉下来。
这就是我在目录中所做的工作,就像魅力一样:
for root, subs, files in os.walk("."):
date = re.search("\w*.-\w*.-\w*.",file)
date_clean = date.group(0).strip()
hour = re.search("hr\d", file)
hour_clean = hour.group(0).strip()
new_name = "Podcast-" + date_clean + "-" + hour_clean +".mp3"
print "Changing",file,"to",new_name+"."
os.rename(file,new_name)
如果我更改到目录并运行它,这是有效的,但我想从根目录运行它。
D:\Files
\Podcasts
\August
\Show 1 AUG-12-2013 Portland hr 1.mp3
Show 2 AUG-12-2013 Portland hr 2.mp3
由于我有一个多月的文件,我想重命名它们 播客-MMM-DD-YYYY-hrX.mp3。我尝试使用fnmatch.filter,但这只能帮助我找到目录,而不是进入它们并重命名这些文件。
我做错了什么?
答案 0 :(得分:3)
重命名时需要使用绝对文件名:
os.rename(os.path.join(root, file), os.path.join(root, new_name))
您似乎也没有循环遍历files
列表;添加另一个for
循环:
for root, subs, files in os.walk("."):
for file in files:
您可能希望避免使用file
作为名称,它会影响内置类型。也许filename
是更好的选择?