見出し画像

Python、「フォルダ名のリネーム」試してみた。(親フォルダ_子フォルダ..)

仕事で使いたいのでコードを考えてみました。



現状のフォルダ構成です。「親フォルダ_子フォルダ」としたいです。

まだ、1か所だけですがリネームできました。
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重に置き換えています。


最後までお読みいただきありがとうございます。
♡頂けますと、励みになります。

この記事が気に入ったらサポートをしてみませんか?