2011-07-09 8 views
0

ディレクトリ内のディレクトリとファイルのラベル付け方法を変更しようとしています。現在のシステムは "082411-SomeNameHere"(mmddyy-Title)で、 "110824-SomeNameHere"に変更したいと思います。Pythonのディレクトリ名を変更する

私は数字の移動がかなりシンプルだと知っていますが、私はディレクトリ内の名前にアクセスしてそれらをすべて変更する方法はほとんど分かりません。

提案?

答えて

1

これを試してみてください:

import os, re, shutil 

r = re.compile(r'^([0-9]{2})([0-9]{2})([0-9]{2})-(.*)$') 

for root, dirs, files in os.walk('/path/to/topdir'): 
    for filename in files: 
     match = r.match(filename) 
     if match: 
      newfilename = match.group(3) + match.group(1) + match.group(2) + '-' + match.group(4) 
      newfilename = os.path.join(root, newfilename) 
      oldfilename = os.path.join(root, filename) 

      # Rename oldfilename to newfilename 
      shutil.move(oldfilename, newfilename) 

は、基本的にこれは os.walkを使用してディレクトリ構造を横断し、古い命名規則を持っているように見えるファイルを探し、部品を抽出し、 shutil.moveと名前の変更を行います。

+0

+1の方が速いです:D – bernie

+0

私はそれをもっとよく理解していたので、私はこの方と一緒に行きました。 Adamのコードはもっと速いかもしれませんが、私にはあまり意味がありません。私はアダムのコードから "os.walk(os.curdir)"を盗んだ。 これは大きな助けに感謝しました。 1つの小さな問題だが、これは想定されているようなすべてのフォルダの内容を変更したが、親ディレクトリのフォルダ名は変更しなかった。 例:フォルダ061411-Nameがあり、その内部が110614-FileAに変更されています。 – JStat

0

あなたは、ディレクトリとファイルのトラバーサルのためos.walkをしたいです。
ファイルの名前変更にはshutil.moveを使用できます。 StackOverflowのにD
ようこそ:私はあなたにことを残して

import os 
import shutil 
for dirpath, dirs, files in os.walk(os.curdir): 
    for filename in files: 
     shutil.move(# alternative: `os.rename` 
       os.path.join(dirpath, filename), 
       os.path.join(dirpath, filename_with_changes), 
      ) 

「...数字の移動は非常に簡単です」。

関連する問題