在上述代码中添加进度反馈
时间: 2024-09-21 22:01:54 浏览: 26
在上述代码中添加进度反馈可以提高用户的体验,尤其是在处理大文件夹时。这里可以使用一个简单的计数器和定时器来显示复制过程中的进度。以下是如何修改`copy_dir`函数的一个示例:
```python
import os
import shutil
import tkinter as tk
import time
# ... 其他代码 ...
def copy_dir_with_progress(src_path, target_path):
total_files = sum([len(files) for r, d, files in os.walk(src_path)])
completed_files = 0
def update_progress():
nonlocal completed_files
progress_percentage = (completed_files / total_files) * 100
progress_bar['value'] = progress_percentage
progress_label.config(text=f"已复制 {completed_files}/{total_files} 文件 ({progress_percentage:.2f}%)")
if completed_files < total_files:
# 每隔一段时间更新进度
progress_bar.after(500, update_progress)
try:
start_time = time.time()
shutil.copytree(src_path, target_path, dirs_exist_ok=True, ignore=lambda x: None)
end_time = time.time()
print(f"成功复制至 {target_path},耗时 {end_time - start_time} 秒")
update_progress()
return True
except Exception as e:
print(f"复制失败: {e}")
return False
# ... 其他代码 ...
progress_bar = tk.Scale(tk.Tk(), orient=tk.HORIZONTAL, length=200, from_=0, to=100, mode='determinate')
progress_bar.pack(pady=10)
progress_label = tk.Label(tk.Tk(), text="")
progress_label.pack()
# 更新主函数调用
success = copy_dir_with_progress(src_path, target_path)
```
在这个版本里,我们添加了一个计数器`completed_files`来跟踪复制的文件数,以及一个`update_progress`函数每间隔一定时间更新进度条和进度百分比。注意,这只是一个基本的进度指示,实际应用中可能需要更精细的控制和更复杂的进度显示。
阅读全文