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

1 か月以上のファイルがあるので、すべてのファイルの名前を 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 に答える