PyQt目录和文件操作
函数原型 | 功能 |
copy(fileName, newName) | 将fileName表示的文件复制为文件newName |
rename(oldName, newName) | 将文件oldName重命名为newName |
remove(fileName) | 删除fileName表示的一个文件 |
exists(fileName) | 判断文件fileName是否存在 |

1 @pyqtSlot() ##类函数copy() 2 def on_btnFile_copy_clicked(self): 3 self.__showBtnInfo(self.sender()) 4 sous=self.ui.editFile.text().strip() 5 if sous=="": 6 self.ui.textEdit.appendPlainText("请选择一个文件") 7 return 8 fileInfo=QFileInfo(sous) 9 newFile=fileInfo.path()+"/"+fileInfo.baseName()+"(copy)."+fileInfo.suffix() 10 print(newFile) 11 if QFile.copy(sous,newFile): 12 self.ui.textEdit.appendPlainText("源文件:"+sous) 13 self.ui.textEdit.appendPlainText("复制文件为:"+newFile+"\n") 14 else: 15 self.ui.textEdit.appendPlainText("复制文件失败\n") 16 pass 17 18 19 @pyqtSlot() ##类函数exists() 20 def on_btnFile_exists_clicked(self): 21 self.__showBtnInfo(self.sender()) 22 sous=self.ui.editFile.text().strip() 23 if sous=="": 24 self.ui.textEdit.appendPlainText("请选择一个文件") 25 return 26 if QFile.exists(sous): 27 self.ui.textEdit.appendPlainText(sous+"文件存在") 28 else: 29 self.ui.textEdit.appendPlainText(sous+"文件不存在") 30 pass 31 32 33 @pyqtSlot() ##类函数remove() 34 def on_btnFile_remove_clicked(self): 35 self.__showBtnInfo(self.sender()) 36 sous=self.ui.editFile.text().strip() 37 if sous=="": 38 self.ui.textEdit.appendPlainText("请选择一个文件") 39 return 40 if QFile.exists(sous): 41 QFile.remove(sous) 42 self.ui.textEdit.appendPlainText("删除文件"+sous) 43 else: 44 self.ui.textEdit.appendPlainText(sous+"文件不存在") 45 pass 46 47 48 @pyqtSlot() ##类函数rename() 49 def on_btnFile_rename_clicked(self): 50 self.__showBtnInfo(self.sender()) 51 sous=self.ui.editFile.text().strip() 52 if sous=="": 53 self.ui.textEdit.appendPlainText("请选择一个文件") 54 return 55 fileInfo=QFileInfo(sous) 56 newFile=fileInfo.path()+"/"+fileInfo.baseName()+".XYZ" #新后缀.XYZ 57 if QFile.rename(sous,newFile): 58 self.ui.textEdit.appendPlainText("源文件:"+sous) 59 self.ui.textEdit.appendPlainText("重命名为:"+newFile+"\n") 60 else: 61 self.ui.textEdit.appendPlainText("重命名文件失败\n") 62 pass
函数原型 | 功能 |
setFileName(fileName) | 设置当前文件为fileName,,文件已打开后不能再调用此函数 |
copy(newName) | 将当前文件复制为newName:表示的文件 |
rename(newName) | 将当前文件重命名为newName |
remove() | 删除当前文件 |
exists() | 判断当前文件是否存在 |
size() | 返回当前文件的大小、字节数 |
函数原型 | 功能 |
setFile(fileName) | 设置一个文件作为PFileInfo 操作的文件 |
absoluteFilePath() | 返回带有文件名的绝对文件路径 |
absolutePath() | 返回绝对路径,不带文件名 |
fileName() | 返回去除路径的文件名 |
filePath() | 返回包含路径的文件名 |
path() | 返回不含文件名的路径 |
size() | 返回文件大小,以字节为单位 |
baseName() | 返回文件基名,第一个“.”之前的文件名 |
completeBaseName() | 返回文件基名,最后一个“.”之前的文件名 |
suffix() | 最后一个“.”之后的后缀 |
completeSuffix() | 第一个“.”之后的后缀 |
isDir() | 判断当前对象是否是一个目录或目录的快捷方式 |
isFile() | 判断当前对象是否是一个文件或文件的快捷方式 |
isExecutable() | 判断当前文件是否是可执行文件 |
birthTime() | 返回文件创建时间,返回值为QDate Time类型 |
lastModified() | 返回文件最后一次被修改的时间,返回值为QDateTime 类型 |
lastRead() | 返回文件最后一次被读取的时间,返回值为QDateTime 类型 |
exists() | 判断文件是否存在 |
exists(fileName) |
类函数,判断fileName:表示的文件是否存在 |

1 ## =========QFileInfo类=========== 2 @pyqtSlot() ##absoluteFilePath() 3 def on_btnInfo_absFilePath_clicked(self): 4 self.__showBtnInfo(self.sender()) 5 sous=self.ui.editFile.text().strip() 6 if sous=="": 7 self.ui.textEdit.appendPlainText("请选择一个文件") 8 return 9 fileInfo=QFileInfo(sous) 10 text=fileInfo.absoluteFilePath() 11 self.ui.textEdit.appendPlainText(text+"\n") 12 pass 13 14 @pyqtSlot() ##absolutePath() 15 def on_btnInfo_absPath_clicked(self): 16 self.__showBtnInfo(self.sender()) 17 sous=self.ui.editFile.text().strip() 18 if sous=="": 19 self.ui.textEdit.appendPlainText("请选择一个文件") 20 return 21 fileInfo=QFileInfo(sous) 22 text=fileInfo.absolutePath() 23 self.ui.textEdit.appendPlainText(text+"\n") 24 pass 25 26 @pyqtSlot() ##fileName() 27 def on_btnInfo_fileName_clicked(self): 28 self.__showBtnInfo(self.sender()) 29 sous=self.ui.editFile.text().strip() 30 if sous=="": 31 self.ui.textEdit.appendPlainText("请选择一个文件") 32 return 33 fileInfo=QFileInfo(sous) 34 text=fileInfo.fileName() 35 self.ui.textEdit.appendPlainText(text+"\n") 36 pass 37 38 @pyqtSlot() ##filePath() 39 def on_btnInfo_filePath_clicked(self): 40 self.__showBtnInfo(self.sender()) 41 sous=self.ui.editFile.text().strip() 42 if sous=="": 43 self.ui.textEdit.appendPlainText("请选择一个文件") 44 return 45 fileInfo=QFileInfo(sous) 46 text=fileInfo.filePath() 47 self.ui.textEdit.appendPlainText(text+"\n") 48 pass 49 50 @pyqtSlot() ##size() 51 def on_btnInfo_size_clicked(self): 52 self.__showBtnInfo(self.sender()) 53 sous=self.ui.editFile.text().strip() 54 if sous=="": 55 self.ui.textEdit.appendPlainText("请选择一个文件") 56 return 57 fileInfo=QFileInfo(sous) 58 text=fileInfo.size() 59 self.ui.textEdit.appendPlainText(str(text)+"\n") 60 pass 61 62 @pyqtSlot() ##path() 63 def on_btnInfo_path_clicked(self): 64 self.__showBtnInfo(self.sender()) 65 sous=self.ui.editFile.text().strip() 66 if sous=="": 67 self.ui.textEdit.appendPlainText("请选择一个文件") 68 return 69 fileInfo=QFileInfo(sous) 70 text=fileInfo.path() 71 self.ui.textEdit.appendPlainText(text+"\n") 72 pass 73 74 @pyqtSlot() ##baseName() 75 def on_btnInfo_baseName_clicked(self): 76 self.__showBtnInfo(self.sender()) 77 fileInfo=QFileInfo(self.ui.editFile.text()) 78 text=fileInfo.baseName() 79 self.ui.textEdit.appendPlainText(text+"\n") 80 pass 81 82 @pyqtSlot() ##completeBaseName() 83 def on_btnInfo_baseName2_clicked(self): 84 self.__showBtnInfo(self.sender()) 85 sous=self.ui.editFile.text().strip() 86 if sous=="": 87 self.ui.textEdit.appendPlainText("请选择一个文件") 88 return 89 fileInfo=QFileInfo(sous) 90 text=fileInfo.completeBaseName() 91 self.ui.textEdit.appendPlainText(text+"\n") 92 pass 93 94 @pyqtSlot() ##suffix() 95 def on_btnInfo_suffix_clicked(self): 96 self.__showBtnInfo(self.sender()) 97 sous=self.ui.editFile.text().strip() 98 if sous=="": 99 self.ui.textEdit.appendPlainText("请选择一个文件") 100 return 101 fileInfo=QFileInfo(sous) 102 text=fileInfo.suffix() 103 self.ui.textEdit.appendPlainText(text+"\n") 104 pass 105 106 @pyqtSlot() ##completeSuffix() 107 def on_btnInfo_suffix2_clicked(self): 108 self.__showBtnInfo(self.sender()) 109 sous=self.ui.editFile.text().strip() 110 if sous=="": 111 self.ui.textEdit.appendPlainText("请选择一个文件") 112 return 113 fileInfo=QFileInfo(sous) 114 text=fileInfo.completeSuffix() 115 self.ui.textEdit.appendPlainText(text+"\n") 116 pass 117 118 @pyqtSlot() ##isDir() 119 def on_btnInfo_isDir_clicked(self): 120 self.__showBtnInfo(self.sender()) 121 sous=self.ui.editFile.text().strip() 122 if sous=="": 123 self.ui.textEdit.appendPlainText("请选择一个文件") 124 return 125 fileInfo=QFileInfo(sous) 126 text=fileInfo.isDir() 127 self.ui.textEdit.appendPlainText(str(text)+"\n") 128 pass 129 130 @pyqtSlot() ##isFile() 131 def on_btnInfo_isFile_clicked(self): 132 self.__showBtnInfo(self.sender()) 133 sous=self.ui.editFile.text().strip() 134 if sous=="": 135 self.ui.textEdit.appendPlainText("请选择一个文件") 136 return 137 fileInfo=QFileInfo(sous) 138 text=fileInfo.isFile() 139 self.ui.textEdit.appendPlainText(str(text)+"\n") 140 pass 141 142 @pyqtSlot() ##isExecutable() 143 def on_btnInfo_isExec_clicked(self): 144 self.__showBtnInfo(self.sender()) 145 sous=self.ui.editFile.text().strip() 146 if sous=="": 147 self.ui.textEdit.appendPlainText("请选择一个文件") 148 return 149 fileInfo=QFileInfo(sous) 150 text=fileInfo.isExecutable() 151 self.ui.textEdit.appendPlainText(str(text)+"\n") 152 pass 153 154 @pyqtSlot() ##birthTime() ,替代了过时的created()函数 155 def on_btnInfo_birthTime_clicked(self): 156 self.__showBtnInfo(self.sender()) 157 sous=self.ui.editFile.text().strip() 158 if sous=="": 159 self.ui.textEdit.appendPlainText("请选择一个文件") 160 return 161 fileInfo=QFileInfo(sous) 162 text=fileInfo.birthTime() 163 self.ui.textEdit.appendPlainText(str(text)+"\n") 164 pass 165 166 @pyqtSlot() ##lastModified() 167 def on_btnInfo_lastModified_clicked(self): 168 self.__showBtnInfo(self.sender()) 169 sous=self.ui.editFile.text().strip() 170 if sous=="": 171 self.ui.textEdit.appendPlainText("请选择一个文件") 172 return 173 fileInfo=QFileInfo(sous) 174 text=fileInfo.lastModified() 175 self.ui.textEdit.appendPlainText(str(text)+"\n") 176 pass 177 178 @pyqtSlot() ##lastRead() 179 def on_btnInfo_lastRead_clicked(self): 180 self.__showBtnInfo(self.sender()) 181 sous=self.ui.editFile.text().strip() 182 if sous=="": 183 self.ui.textEdit.appendPlainText("请选择一个文件") 184 return 185 fileInfo=QFileInfo(sous) 186 text=fileInfo.lastRead() 187 self.ui.textEdit.appendPlainText(str(text)+"\n") 188 pass 189 190 @pyqtSlot() ##类函数exists() 191 def on_btnInfo_exists_clicked(self): 192 self.__showBtnInfo(self.sender()) ##self.sender()将点击按钮对象传给函数__showBtnInfo() 193 sous=self.ui.editFile.text().strip() #源文件 194 if QFile.exists(sous): 195 self.ui.textEdit.appendPlainText("True \n") 196 else: 197 self.ui.textEdit.appendPlainText("False \n") 198 pass 199 200 @pyqtSlot() ##接口函数exists() 201 def on_btnInfo_exists2_clicked(self): 202 self.__showBtnInfo(self.sender()) 203 sous=self.ui.editFile.text().strip() 204 if sous=="": 205 self.ui.textEdit.appendPlainText("请选择一个文件") 206 return 207 fileInfo=QFileInfo(sous) 208 text=fileInfo.exists(sous) 209 self.ui.textEdit.appendPlainText(str(text)+"\n") 210 pass
函数原型 | 功能 |
tempPath() | 返回临时文件目录名称 |
rootPath() | 返回根目录名称 |
homePath() |
返回主目录名称 |
currentPath() | 返回当前目录名称 |
setCurrent(path) | 设置path表示的目录为当前目录,bool型返回值表示设置是否成功 |
drives() |
返回系统的根目录列表,在Windows 系统上返回的是盘符列表,返回数据是QFileInfo |

1 ## ==================QDir类======================== 2 @pyqtSlot() ##tempPath() 3 def on_btnDir_tempPath_clicked(self): 4 self.__showBtnInfo(self.sender()) 5 self.ui.textEdit.appendPlainText(QDir.tempPath()) 6 pass 7 8 @pyqtSlot() ##rootPath() 9 def on_btnDir_rootPath_clicked(self): 10 self.__showBtnInfo(self.sender()) 11 self.ui.textEdit.appendPlainText(QDir.rootPath()) 12 pass 13 14 @pyqtSlot() ##homePath() 15 def on_btnDir_homePath_clicked(self): 16 self.__showBtnInfo(self.sender()) 17 self.ui.textEdit.appendPlainText(QDir.homePath()) 18 pass 19 20 @pyqtSlot() ##drives() 21 def on_btnDir_drives_clicked(self): 22 self.__showBtnInfo(self.sender()) 23 strList=QDir.drives() #QFileInfoList 24 for line in strList: #line 时QFileInfo类型 25 self.ui.textEdit.appendPlainText(line.path()) 26 self.ui.textEdit.appendPlainText("") 27 pass 28 29 @pyqtSlot() ##currentPath() 30 def on_btnDir_curPath_clicked(self): 31 self.__showBtnInfo(self.sender()) 32 self.ui.textEdit.appendPlainText(QDir.currentPath()) 33 pass 34 35 @pyqtSlot() ##setCurrent() 36 def on_btnDir_setCurPath_clicked(self): 37 self.__showBtnInfo(self.sender()) 38 _dirName=self.ui.editDir.text() 39 if _dirName == '': 40 self.ui.textEdit.appendPlainText("请先选择目录") 41 return 42 if QDir.setCurrent(_dirName): 43 self.ui.textEdit.appendPlainText("设置目录{}成功".format(_dirName)) 44 else: 45 self.ui.textEdit.appendPlainText("设置目录{}失败".format(_dirName)) 46 pass
函数原型 | 功能 |
absoluteFilePath( fileName) |
若fileName 是带路径的文件名,则返回其带路径文件名;若fileName 是不带路径的文件 |
absolutePath() | 返回当前目录的绝对路径 |
canonicalPath() | 返回当前目录的标准路径 |
filePath(fileName) | 功能与absoluteFilePathOE 函数类似,但可以是相对路径 |
dirName() | 返回最后一级目录的名称 |
exists() | 判断当前目录是否存在 |
exists(dirName) | 判断一个目录dirName 是否存在 |
entryList( filters, sort) | 返回目录下文件名、子目录等的名称字符串列表
参数filters 是枚举类型QDir.Filter |
mkdir(dirName) | 在当前目录下建一个名称为dirName的子目录 |
rmdir(dirName) | 删除指定的目录dirName |
remove( fileName) | 删除当前目录下的文件fileName |
rename( oldName, newName) | 将文件或目录oldName 更名为newName |
setPath(pathName) | 设置QDir对象的当前目录为pathName |
removeRecursively() | 删除当前目录及其下面的所有文件 |
函数entryList((filters,,sort)用于获取目录下的目录或文件列表,参数filters 是枚举类型
QDir.Filter E 的取值组合,QDir.Filter 枚举类型的常用取值如下:
- QDir. AlIDirs (列出所有目录);
- QDir. Files (列出所有文件);
- QDir.Drives (列出所有盘符(UNIX系统下无效));
- QDir. NODotAndDotDot (不列出特殊的符号,如“.”和“..”);
- QDir. AllEntries (列出目录下的所有项目)。
函数原型 | 功能 |
addPath(path) | 添加一个监听的目录或文件,bool型返回值表示操作是否成功 |
addPaths(paths) | 添加需要监听的目录或文件列表,返回的是未成功添加的文件或目录列表 |
directories |
返回监听的目录名称字符串列表 |
files | 返回监听的文件名称字符串列表 |
removePath(path) | 移除监听的目录或文件,bool型返回值表示操作是否成功 |
removePaths(paths) | 移除监听的目录或文件列表,返回的是未成功移除的文件或目录列表 |
QFileSystem Watcher 有以下两个信号,在所监听的目录或文件发生变化时发射。
- directoryChangedof 信号在所监听的目录发生变化时发射,如增加或减少文件、目录被删除等。
- fileChangedO1 信号在所监听的文件发生变化时发射,如文件内容被修改、文件重命名或被删除等。

1 ## ==========QFileSystemWatcher类=================== 2 3 @pyqtSlot() ##addPath()添加监听目录 4 def on_btnWatch_addDir_clicked(self): 5 self.__showBtnInfo(self.sender()) 6 curDir=QDir.currentPath() 7 aDir=QFileDialog.getExistingDirectory(self,"选择一个需要监听的目录",curDir,QFileDialog.ShowDirsOnly) 8 self.fileWatcher.addPath(aDir) #添加监听目录 9 self.ui.textEdit.appendPlainText("添加的监听目录:") 10 self.ui.textEdit.appendPlainText(aDir+"\n") 11 pass 12 13 14 @pyqtSlot() ##addPaths()添加监听文件 15 def on_btnWatch_addFiles_clicked(self): 16 self.__showBtnInfo(self.sender()) 17 curDir=QDir.currentPath() 18 fileList,flt=QFileDialog.getOpenFileNames(self,"选择需要监听的文件",curDir,"所有文件(*.*)") 19 self.fileWatcher.addPaths(fileList) #添加监听文件列表 20 self.ui.textEdit.appendPlainText("添加的监听文件:") 21 for lineStr in fileList: 22 self.ui.textEdit.appendPlainText(lineStr) 23 self.ui.textEdit.appendPlainText("") 24 pass 25 26 27 @pyqtSlot() ##removePaths()移除所有监听的文件和目录 28 def on_btnWatch_remove_clicked(self): 29 self.__showBtnInfo(self.sender()) 30 self.ui.textEdit.appendPlainText("移除所有监听的目录和文件\n") 31 dirList=self.fileWatcher.directories() #目录列表 32 self.fileWatcher.removePaths(dirList) 33 fileList=self.fileWatcher.files() 34 self.fileWatcher.removePaths(fileList) 35 pass 36 37 38 @pyqtSlot() ##显示监听目录,directories() 39 def on_btnWatch_dirs_clicked(self): 40 self.__showBtnInfo(self.sender()) 41 strList=self.fileWatcher.directories() 42 self.ui.textEdit.appendPlainText("正在监听的目录:") 43 for line in strList: 44 self.ui.textEdit.appendPlainText(line) 45 self.ui.textEdit.appendPlainText("") 46 pass 47 48 49 @pyqtSlot() ##显示监听文件,files() 50 def on_btnWatch_files_clicked(self): 51 self.__showBtnInfo(self.sender()) 52 strList=self.fileWatcher.files() 53 self.ui.textEdit.appendPlainText("正在监听的文件:") 54 for line in strList: 55 self.ui.textEdit.appendPlainText(line) 56 self.ui.textEdit.appendPlainText("") 57 pass
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~