遍历电脑整个硬盘查找指定格式文件
2018-03-07 21:44
901 查看
#!/usr/bin/env python # -*- encoding:utf8 -*- import wx import os, os.path, itertools import re import wmi from threading import Thread, activeCount import sys reload(sys) sys.setdefaultencoding('utf8') def getdiskpart(): """返回电脑磁盘分区情况 """ diskpartlist = [] c = wmi.WMI() for physical_disk in c.Win32_DiskDrive(): for partition in physical_disk.associators("Win32_DiskDriveToDiskPartition"): for logical_disk in partition.associators("Win32_LogicalDiskToPartition"): diskpartlist.append(logical_disk.Caption) return diskpartlist # filenamelist=[] class MenuEventFrame(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, u'文件查找', size=(400, 500)) self.initUI() self.Center() # self.search_thread def initUI(self): self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) fgSizer2 = wx.FlexGridSizer(4, 2, 0, 0) fgSizer2.AddGrowableCol(1) fgSizer2.AddGrowableRow(3) fgSizer2.SetFlexibleDirection(wx.BOTH) fgSizer2.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) fgSizer2.SetMinSize(wx.Size(2, 4)) self.m_staticText18 = wx.StaticText(self, wx.ID_ANY, u"路径", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText18.Wrap(-1) fgSizer2.Add(self.m_staticText18, 0, wx.ALL, 5) self.pathvalue = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) fgSizer2.Add(self.pathvalue, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText19 = wx.StaticText(self, wx.ID_ANY, u"文件格式", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText19.Wrap(-1) fgSizer2.Add(self.m_staticText19, 0, wx.ALL, 5) self.fromatvalue = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) fgSizer2.Add(self.fromatvalue, 0, wx.ALL | wx.EXPAND, 5) self.m_staticText20 = wx.StaticText(self, wx.ID_ANY, u"", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText20.Wrap(-1) fgSizer2.Add(self.m_staticText20, 0, wx.ALL, 5) self.button = wx.Button(self, wx.ID_ANY, u"查询", wx.DefaultPosition, wx.DefaultSize, 0) fgSizer2.Add(self.button, 0, wx.ALL | wx.ALIGN_RIGHT, 5) self.m_staticText21 = wx.StaticText(self, wx.ID_ANY, u"结果", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText21.Wrap(-1) fgSizer2.Add(self.m_staticText21, 0, wx.ALL, 5) self.m_textCtrl8 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.HSCROLL | wx.TE_READONLY | wx.TE_MULTILINE) fgSizer2.Add(self.m_textCtrl8, 0, wx.ALL | wx.EXPAND, 5) self.SetSizer(fgSizer2) self.Layout() self.Centre(wx.BOTH) self.Bind(wx.EVT_BUTTON, self.OnClick, self.button) def work_func(self, searchfile, path, value, textctrl): try: print activeCount() textctrl.Disable() self.button.Disable() searchfile(path, value, textctrl) except Exception, e: raise finally: textctrl.Enable() self.button.Enable() def OnClick(self, event): self.m_textCtrl8.SetValue("") if self.fromatvalue.GetValue() == '': wx.MessageBox(u"请输入要查找的文件格式") return value = self.fromatvalue.GetValue().split() if self.pathvalue.GetValue() == '': for dirr in getdiskpart(): path = dirr self.search_thread = Thread(target=self.work_func, args=(searchfile, path, value, self.m_textCtrl8)) self.search_thread.start() else: path = self.pathvalue.GetValue() if not os.path.isdir(path): wx.MessageBox(u'请输入正确的路径') return self.search_thread = Thread(target=self.work_func, args=(searchfile, path, value, self.m_textCtrl8)) self.search_thread.start() def anyTrue(filename, sequence): return True in itertools.imap(filename.endswith, sequence) def searchfile(path, endswithformate, textctrl): for basedir, dirlist, filenames in os.walk(path): for x in filenames: if anyTrue(x, endswithformate): textctrl.WriteText(os.path.join(basedir, x) + os.linesep) if __name__ == '__main__': app = wx.App() frame = MenuEventFrame(parent=None, id=-1) frame.Show() app.MainLoop()
相关文章推荐
- Java 遍历文件夹 取出指定文件格式的文件
- 遍历查找指定文件
- C# 查找指定目录下指定文件名或格式的文件并将结果保存到文本
- QT 遍历目录查找指定文件
- 遍历查找指定文件
- Mac技巧之让U盘、移动硬盘在苹果电脑和Windows PC都能识别/读写,且支持4GB大文件:exFAT格式
- 遍历查找指定文件
- 遍历整个文件夹,查找特定扩展名的文件,更改文件的前4个字节,并且改名字
- Linux driver 遍历指定文件夹查找文件
- 遍历各磁盘(包括本地硬盘,光盘,可移动磁盘)及查找某文件并启动
- Delphi遍历文件夹及子文件夹(可查找固定格式文件)
- VC++遍历整个目录树查找文件
- Linux下 C语言实现遍历指定目录下指定格式的文件
- Perl初级教程 (5) 遍历文件夹内指定扩展名文件,查找匹配关键字的输出。
- C# 遍历指定文件夹下的指定格式文件
- Mac技巧之让U盘、移动硬盘在苹果电脑和Windows PC都能识别/读写,且支持4GB大文件:exFAT格式
- 用python查找指定格式或名称的文件及修改指定文件夹名称
- java 遍历指定目录下的文件夹并查找包含指定关键字的文件
- Delphi遍历文件夹及子文件夹(可查找固定格式文件)
- Qt文件操作:遍历文件夹中 指定格式的文件,并添加文件名到comboBox上