pyqt下创建文件夹,并自定义输入和缺省值(QFileSystemModel的用法)
1. 获取指定的路径内容并显示
self.sample_type = QTreeView()
fileDir = r'./db/sample_data'
self.sample_type.setHeaderHidden(True)#不显示表头
self.sample_type.setColumnHidden(1,True)#不显示行头
self.Dirmodel = QFileSystemModel()
self.Dirmodel.setRootPath(QDir.currentPath())
# self.Dirmodel.setFilter(QDir.Dirs)#内容过滤,只显示文件夹
self.sample_type.setModel(self.Dirmodel)
self.sample_type.setRootIndex(self.Dirmodel.index(fileDir))#
self.sample_type.setColumnHidden(1,True)
self.sample_type.setColumnHidden(2,True)
self.sample_type.setColumnHidden(3,True)#隐藏不需要的列
#然后再窗口加入qtreeview就可以显示了
2. 获取路径
def getDir(self,index):#获取鼠标指向索引,还可以预览图
self.FilePath = self.Dirmodel.filePath(index)#获取鼠标点击指定路径
self.index_rm = index #index就是QModelIndex
self.FilePath
得到是电脑的绝对路径
3.新建目录
def AddItem(self,flag):#新建目录或文件
if flag==1:
dir_path = r'./db/sample_data'
dir_name,ok = QInputDialog.getText(self,'文件名','输入文件夹名称',QLineEdit.Normal)
if dir_name not in os.listdir(dir_path) and len(dir_name) != 0: # 文件夹名称不存在才创建
os.mkdir(dir_path+'./'+dir_name)
else:
QMessageBox.warning(self,'警告','名称已存在或为空')
os.mkdir用来创建文件夹,QMessageBox.warning
显示报警信息
4. 删除目录或文件
if self.Dirmodel.isDir(self.index_rm):#判断是否文件夹
shutil.rmtree(self.FilePath)#递归删除,可以删除非空文件夹
self.FilePath=''
print("删除文件夹")
else:
print('删除文件')
self.Dirmodel.remove(self.index_rm)
dirName4 = self.FilePath.split('/')[-4]#切片取倒数第四个路径名
dirName1 = (self.FilePath.split('/')[-1]).split('.')[-2]#切片取不带后缀的文件名,也可以用正则表达式r'(.+?)\.'
dir_path = self.FilePath[:self.FilePath.rfind('/')]#获取上一级路径
os.remove(dir_path+'./'+dirName1+'.bmp')
self.FilePath=''