ファイルとフォルダーを選択し、選択したフォルダーの下にあるフォルダーすべてに選択したファイルをコピーするプログラム
おひさしぶり
記事サボってた。これからは思想の強いことも書きたいなと思っている。てか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化もしておきました。