-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
121 lines (111 loc) · 4.33 KB
/
main.py
File metadata and controls
121 lines (111 loc) · 4.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainui.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
#导入需要的库(包)
from PyQt5.QtCore import (
Qt,
QCoreApplication,
QCoreApplication
)
from PyQt5.QtWidgets import (
QApplication,
QListWidgetItem,
QFileDialog,
QMessageBox
)
from tools import about,helps
from config import * #默认整理方式
from json5 import load
from os import getcwd,listdir
import os.path
from pathlib import Path
from numpy import array
from classifier import classify
from time import time
from mainui import Ui_MainWindow
def LowerAll(array_:list[str]):
a=[]
for i in range(len(array_)):
a.append(array_[i].lower())
return a
#UI界面
class Ui_MainWindow(Ui_MainWindow):
#绑定功能
def start(self):
try:
classifydir=self.lineEdit.text()
timer=0
if '/' in classifydir:
classifydir='\\'.join(classifydir.split('/')) #防止误判
if os.path.samefile(classifydir,getcwd()): #拦截以程序本身做实验的操作
QMessageBox.critical(None,'错误','请不要整理程序本身的文件夹!')
else:
dirlist=listdir(classifydir)
a=[]
self.listWidget.clear()
if dirlist != []:
if 'desktop.ini' in dirlist:
dirlist.remove('desktop.ini')
FILE_TOTAL_NUMBER=len(dirlist)
for i in range(FILE_TOTAL_NUMBER):
path=os.path.join(classifydir,dirlist[i])
'''if '/' in path:
path='\\'.join(path.split('/'))'''
if Path(path).is_file() or Path(path).is_dir()==False:
a.append(path)
item = QListWidgetItem(None)
item.setText(path)
item.setToolTip(path)
self.listWidget.addItem(item)
self.listWidget.setCurrentRow(self.listWidget.count()-1)
FILE_TOTAL_NUMBER=len(a)
print(f'共有{FILE_TOTAL_NUMBER}个文件需整理。')
f=load(open('./settings.json',encoding='utf-8'))
dirs=array(a)
timer=time()
if f:
for i in f.keys():
f[i]=LowerAll(f[i])
classify(dirs,f.items(),True)
else:
classify(dirs)
except FileNotFoundError as e:
print(e)
QMessageBox.critical(None,'错误',str(e).split(": ",1)[-1]+'文件已损坏或丢失!')
except Exception as e:
print(e)
QMessageBox.critical(None,'错误',f'无法分类,原因:\n{str(e)}')
else:
if timer: #计时器正常工作
print('Classify successfully.')
USETIME=str(time()-timer)+'s'
print(f'文件整理共用时间:{USETIME}')
QMessageBox.information(None,'提示',f'成功分类{FILE_TOTAL_NUMBER}个文件,共用{USETIME}。')
def choosedir(self):
self.dir=QFileDialog.getExistingDirectory(None,'选择文件夹',getcwd())
if self.dir:
print('DirPath:'+self.dir)
self.lineEdit.setText(self.dir)
#UI代码
def setupUi(self, win):
super().setupUi(win)
self.pushButton.clicked.connect(about)
self.pushButton_2.clicked.connect(helps)
self.choose.clicked.connect(self.choosedir)
self.choose_2.clicked.connect(self.start)
import icon_rc
if __name__ == "__main__":
from sys import argv,exit
from mywidgets import MyWindow,lesshint
QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
app = QApplication(argv)
MainWindow = MyWindow()
lesshint(MainWindow)
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
exit(app.exec_())