ディレクトリ内のディレクトリとファイルのラベル付け方法を変更しようとしています。現在のシステムは "082411-SomeNameHere"(mmddyy-Title)で、 "110824-SomeNameHere"に変更したいと思います。Pythonのディレクトリ名を変更する
私は数字の移動がかなりシンプルだと知っていますが、私はディレクトリ内の名前にアクセスしてそれらをすべて変更する方法はほとんど分かりません。
提案?
ディレクトリ内のディレクトリとファイルのラベル付け方法を変更しようとしています。現在のシステムは "082411-SomeNameHere"(mmddyy-Title)で、 "110824-SomeNameHere"に変更したいと思います。Pythonのディレクトリ名を変更する
私は数字の移動がかなりシンプルだと知っていますが、私はディレクトリ内の名前にアクセスしてそれらをすべて変更する方法はほとんど分かりません。
提案?
これを試してみてください:
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
と名前の変更を行います。
あなたは、ディレクトリとファイルのトラバーサルのため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),
)
「...数字の移動は非常に簡単です」。
+1の方が速いです:D – bernie
私はそれをもっとよく理解していたので、私はこの方と一緒に行きました。 Adamのコードはもっと速いかもしれませんが、私にはあまり意味がありません。私はアダムのコードから "os.walk(os.curdir)"を盗んだ。 これは大きな助けに感謝しました。 1つの小さな問題だが、これは想定されているようなすべてのフォルダの内容を変更したが、親ディレクトリのフォルダ名は変更しなかった。 例:フォルダ061411-Nameがあり、その内部が110614-FileAに変更されています。 – JStat