Python 实现全盘文件搜索
1 简介
配套软件版本:Python 3.8+pycharm
功 能: 按照输入的字符对全盘文件进行搜索,将包含输入字符的文件名称及其路径显示到界面中。
2 PyCharm&Pyqt的配置说明
2.1 模块安装
需要安装模块pyqt5,designer,
安装方法:pip install pyqt5
pip install pyqt5-tools
2.2 按照以下步骤将安装的模块设置为external tools
步骤1:
打开PyCharm,选择Settings -> Tools -> External Tools,点击左上角的绿色加号。
步骤2:
Name填入QtDesigner(方便后续使用,名称无所谓)。Program选择我们安装的PyQt5-tools下面的designer.exe。Working directory填$FileDir$。然后点击OK,则添加了QtDesigner作为PyCharm的外置工具。
步骤3:
按照同样的步骤添加PyUIC(UI转换工具)。(PyUIC的Program为Python.exe,在Python的安装目录下面的Scripts目录下,Working directory $FileName$,Arguments则填入如下代码:
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
步骤4:
最后添加pyrcc用于PyQt5的资源文件转码。具体配置与上述内容相同,Arguments填入:
$FileName$ -o $FileNameWithoutExtension$_rc.py
步骤5:
退出之前,点击Apply保存配置。配置完成之后,PyCharm中会加入3个工具。
可以在Tools-》External Tools中查看
3 Desinger实现界面设置
步骤1:
打开Pycharm-》Tools-》External Tools-》Qt Designer-》选择Main Window-》点击创建。
步骤2:
从左边的Widget Box中分别选择添加Line Edit/Push Button/List Widget
步骤3:
手动调整大小&从上方的工具栏中,选择参数
(不同的布局式,水平、垂直、表格)。将窗口调整为适合的布局。(按下ctl +R进行查看)
步骤4:选中步骤2的Widget,在右侧的属性编辑器中,编辑属性。
如:QMainWindow的window Title:搜索本地文件
Pushbutton的快捷键:
步骤4:保存文件(.ui文件)
4 Py文件修改
步骤1:在Pycharm选中ui文件,右击选择External Tools->PyUIC-》将会在当前目录中生成对应的py文件
步骤2:main文件中import步骤1中档的py文件,并在main中添加如下命令,点击运行,查看是否第3中的窗口。
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = everything.Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
5 实现文件搜索
我们新建一个 ()的方法search_slot(),将其作为按钮点击信号的槽函数。
def search_slot(self):
start_time = time.time()
print(start_time)
kw = self.lineEdit.text() # 获取搜索词
self.listWidget.clear()
t = []
for i in range(65, 91):
vol = chr(i) + ':'
if os.path.isdir(vol):
for root, dirs, files in os.walk(vol, topdown=1):
for name in files:
if kw in name:
# print(os.path.join(root, name))
pa1 = os.path.join(root, name)
t.append(pa1)
f = QtWidgets.QListWidgetItem(pa1) # 创建一个搜索结果项
self.listWidget.addItem(f)
end_time = time.time()
print(f'程序运行耗时:{(end_time - start_time):.2f}s')
接着将按钮的点击信号进行绑定:
self.pushButton.clicked.connect(self.search_slot)
选中文件:
def click_slot(self):
print(self.listWidget.currentItem().text())
os.startfile(str(self.listWidget.currentItem().text()))
打开文件:
self.listWidget.itemClicked['QListWidgetItem*'].connect(self.click_slot)
6 不足,待优化
无法对搜索结果操作,(打开、打开路径、删除)