Python、「フォルダ名のリネーム」試してみた。(親フォルダ_子フォルダ..)
仕事で使いたいのでコードを考えてみました。
import os
def add_parent_prefix_to_subfolders(directory):
for root, dirs, files in os.walk(directory):
for folder in dirs:
folder_path = os.path.join(root, folder)
parent_folder = os.path.basename(root)
new_folder_name = f'{parent_folder}_{folder}'
os.rename(folder_path, os.path.join(root, new_folder_name))
print(f'フォルダ名を変更しました: {folder_path} -> {os.path.join(root, new_folder_name)}')
# ディレクトリを指定して関数を呼び出し
add_parent_prefix_to_subfolders(r"C:\\PATH")
「親フォルダ_子フォルダ」に変更するためのコード
import os
def add_parent_prefix_to_subfolders(directory):
for root, dirs, files in os.walk(directory, topdown=False):
for folder in dirs:
folder_path = os.path.join(root, folder)
parent_folder = os.path.basename(os.path.dirname(folder_path))
new_folder_name = f'{parent_folder}_{os.path.basename(folder_path)}'
os.rename(folder_path, os.path.join(root, new_folder_name))
print(f'フォルダ名を変更しました: {folder_path} -> {os.path.join(root, new_folder_name)}')
# 最上部のフォルダがリネームされたら処理終了
if root == directory:
return
# ディレクトリを指定して関数を呼び出し
add_parent_prefix_to_subfolders(r"C:\\Users\パスデータを入れてください\ALL")
import os
def rename_folders(root_path):
# ルートディレクトリ内のフォルダを1つずつ処理する
for folder_name in os.listdir(root_path):
folder_path = os.path.join(root_path, folder_name)
# フォルダである場合
if os.path.isdir(folder_path):
# 親フォルダ名を取得する
parent_folder = os.path.basename(os.path.dirname(folder_path))
# 新しいフォルダ名を作成する
new_folder_name = f'{parent_folder}_{os.path.basename(folder_path)}'
new_folder_path = os.path.join(os.path.dirname(folder_path), new_folder_name)
# フォルダ名を変更する
os.rename(folder_path, new_folder_path)
# 変更前と変更後のフォルダ名を表示する
print(f'{folder_path} を {new_folder_name} に変更しました')
# 再帰的に処理する
rename_folders(new_folder_path)
# ルートディレクトリのパスを指定する
root_directory = '親フォルダのパスを入力してください'
# ルートディレクトリ内のフォルダ名を変更する
rename_folders(root_directory)
パスデータは、私はメモ帳でバックスラッシュの2重に置き換えています。
最後までお読みいただきありがとうございます。
♡頂けますと、励みになります。
この記事が気に入ったらサポートをしてみませんか?