在这个程序中,我们首先读取或创建一个名为config.ini
的配置文件,并检查其中是否有存储的源文件夹和目标文件夹路径。如果没有,创建了一个Tkinter窗口并隐藏了它。我们使用filedialog
模块的askdirectory()
函数分别选择源文件夹和目标文件夹,并将它们的路径分别赋值给source_folder
和target_folder
变量。更新config.ini
文件以保存最近使用的源文件夹和目标文件夹路径。最后,我们创建了一个Tkinter窗口和一个按钮,并将copy_mp3_files()
函数绑定到按钮的点击事件中。当用户单击“复制”按钮时,遍历源文件夹中的所有文件,对于以.mp3
结尾的文件,使用shutil
模块的copy2()
函数将其复制到目标文件夹中并输出“复制完成!”消息。
import tkinter as tk
from tkinter import filedialog
import os
import shutil
import configparser
# 读取或创建config文件
config = configparser.ConfigParser()
if not os.path.exists('config.ini'):
config['DEFAULT'] = {'source_folder': '', 'target_folder': ''}
with open('config.ini', 'w') as configfile:
config.write(configfile)
else:
config.read('config.ini')
# 获取源文件夹和目标文件夹路径
source_folder = config['DEFAULT']['source_folder']
target_folder = config['DEFAULT']['target_folder']
if not source_folder:
# source_folder = input('请输入源文件夹路径:')
# 选择源文件夹
source_folder = filedialog.askdirectory(title='选择源文件夹')
if not source_folder:
print('未选择源文件夹。')
exit()
if not target_folder:
# target_folder = input('请输入目标文件夹路径:')
# 选择目标文件夹
target_folder = filedialog.askdirectory(title='选择目标文件夹')
if not target_folder:
print('未选择目标文件夹。')
exit()
# 创建Tkinter窗口
root = tk.Tk()
root.withdraw() # 隐藏窗口
# 定义复制函数
def copy_mp3_files():
for filename in os.listdir(source_folder):
if filename.endswith('.mp3'):
source_path = os.path.join(source_folder, filename)
target_path = os.path.join(target_folder, filename)
shutil.copy2(source_path, target_path)
print('复制完成!')
# 创建Tkinter窗口和按钮
window = tk.Tk()
window.title('复制MP3文件')
window.geometry('300x100')
copy_button = tk.Button(window, text='复制', command=copy_mp3_files)
copy_button.pack(pady=20)
# 更新config文件
config['DEFAULT']['source_folder'] = source_folder
config['DEFAULT']['target_folder'] = target_folder
with open('config.ini', 'w') as configfile:
config.write(configfile)
# 运行窗口
window.mainloop()