使用tkinter实现一个简单的文件备份工具(二)

通过目录结构生成treeview的两种方法:
1.之前参考的代码用的os.listdir(),文件夹数量多容易卡住。
2.自己想了一个用os.walk()返回的元组生成的,只用读一次目录,之后只用操作列表,打开复杂文件夹表现应该好一点。
如下图两种方法表现一样
在这里插入图片描述
代码如下:

import os
import tkinter as tk
from tkinter import ttk

#方法1:将os.walk生成的元组转成列表list1,并通过列表生成treeview
UserPath=r"C:\Users\Administrator\Desktop\1"
a=os.walk(UserPath)
list1=[]
for i in a:    
    list1.append(list(i))
    #通过list1中的元素生成目录Treeview    
def LoadTree(myroot,mylist):
    for i in mylist[1]:
        _pathValue=mylist[0]+os.sep+i
        _dirTree=_myTree.insert(myroot,"end",text=i,values=_pathValue)
        for j in list1:
            if j[0]==_pathValue:
                LoadTree(_dirTree,j)                
    for i in mylist[2]:
        _filePathValue=mylist[0]+os.sep+i
        _fileTree=_myTree.insert(myroot,"end",text=i,values= _filePathValue)

#方法2:使用listdir生成treeview
def LoadTree2(parentPath,root):
     filelist = os.listdir(parentPath)
     for filename in filelist:
        absPath = os.path.join(parentPath,filename)
        treey =_myTree2.insert(root,'end',text=filename,values=(absPath))
        #判断路径是否是文件夹
        if os.path.isdir(absPath):
            LoadTree2(absPath,treey)

#主窗口生成及配置           
root=tk.Tk()
root.title("PyFileSync By CeresLi")
root.geometry("600x400")
#方法1
_myTree=ttk.Treeview(root,show="tree")
_myTree.pack()
_TreeRoot=_myTree.insert("","end",text=os.path.split(UserPath)[-1],values=UserPath)
LoadTree(_TreeRoot,list1[0])
#方法2
_myTree2=ttk.Treeview(root,show="tree")
_myTree2.pack()
_Tree2Root=_myTree2.insert("","end",text=os.path.split(UserPath)[-1],values=UserPath)
LoadTree2(UserPath,_Tree2Root)

root.mainloop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值