PyQt目录和文件操作

QFile的一些类函数
函数原型 功能
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
示例代码
复制代码
QFile的一些接口函数
函数原型 功能
setFileName(fileName) 设置当前文件为fileName,,文件已打开后不能再调用此函数
copy(newName) 将当前文件复制为newName:表示的文件
rename(newName) 将当前文件重命名为newName 
remove() 删除当前文件
exists() 判断当前文件是否存在
size() 返回当前文件的大小、字节数

 

QFilelnfo 的一些接口函数
 函数原型  功能
 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
示例代码
复制代码
QDir的一些类函数
函数原型 功能
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
示例
复制代码
QDir的一些接口函数
函数原型 功能
absoluteFilePath( fileName)

若fileName 是带路径的文件名,则返回其带路径文件名;若fileName 是不带路径的文件
名,则用当前目录返回其带路径的文件名

absolutePath() 返回当前目录的绝对路径
canonicalPath() 返回当前目录的标准路径
filePath(fileName) 功能与absoluteFilePathOE 函数类似,但可以是相对路径
dirName() 返回最后一级目录的名称
exists() 判断当前目录是否存在
exists(dirName) 判断一个目录dirName 是否存在
entryList( filters, sort) 返回目录下文件名、子目录等的名称字符串列表

参数filters 是枚举类型QDir.Filter
参数sort是枚举类型QDir.SortFlag

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 (列出目录下的所有项目)。
QFileSystemWatcher的接口函数
函数原型 功能
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
示例代码
复制代码

 

posted @   foreverL-Vmf  阅读(890)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示