1

如何在 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

由于我有一个多月的文件,我想将它们全部重命名为 Podcast-MMM-DD-YYYY-hrX.mp3。我尝试使用 fnmatch.filter,但这只能帮助我找到目录,而不是进入它们并重命名这些文件。

我究竟做错了什么?

4

1 回答 1

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是更好的选择?

于 2013-08-13T13:52:10.237 回答