ファイルとフォルダーを選択し、選択したフォルダーの下にあるフォルダーすべてに選択したファイルをコピーするプログラム

おひさしぶり

記事サボってた。これからは思想の強いことも書きたいなと思っている。てかnoteってそういうとこっすよね。

プログラム本体

import shutil
import os
import time
import PySimpleGUI as sg

def copy_files(source_file, destination_folder):
    if not os.path.exists(destination_folder):
        sg.PopupError("コピー先フォルダーが存在しません。")
        return

    source_file_name = os.path.basename(source_file)

    for root, dirs, files in os.walk(destination_folder):
        for dir in dirs:
            destination_path = os.path.join(root, dir, source_file_name)
            shutil.copy2(source_file, destination_path)

    sg.Popup("コピーが完了しました。")

layout = [
    [sg.Text("コピーするファイルを選んでください:")],
    [sg.Input(), sg.FileBrowse(key="-SOURCE-")],
    [sg.Text("コピー先フォルダーを選んでください:")],
    [sg.Input(), sg.FolderBrowse(key="-DESTINATION-")],
    [sg.Button("コピー開始", key="-COPY-"), sg.Button("終了", key="-EXIT-")]
]

window = sg.Window("ファイルコピー", layout)

while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED or event == "-EXIT-":
        break

    if event == "-COPY-":
        start_time = time.time()
        source_file = values["-SOURCE-"]
        destination_folder = values["-DESTINATION-"]

        if source_file and destination_folder:
            copy_files(source_file, destination_folder)

        end_time = time.time()
        elapsed_time = end_time - start_time
        print("処理時間:", elapsed_time, "秒")

window.close()

配布

GUIなので説明いらずで使えるかと思います。一応exe化もしておきました。

exe版


いいなと思ったら応援しよう!

この記事が参加している募集