"""
此代码用于删除文件夹下面以txt结尾的文件
(同理将.txt-->.py可以删除py文件)
借用pyqt5调用文件选择对话框看起来比较人性化点
本来是用win32ui的,但是win32ui不太人性化,不能选择文件夹,
需要经过一点处理,虽也能实现,但是比较麻烦,而tk我也不熟悉
一下子去用也崩溃了,后来想起我玩过qt,索性就试试
dlg = win32ui.CreateFileDialog(1) #打开文件对话框
dlg.SetOFNInitialDir("E:\\") #初始
dlg.DoModal()
filename = dlg.GetPathName()
print(os.path.dirname(filename),os.path.basename(filename))
try:
print(os.path.dirname(filename),"文件夹大小为:" ,scanFolder(os.path.dirname(filename)),"字节")
except Exception as e:
print("未选择路径")
"""
1 下面是使用pyqt5,调用选择文件夹对话框----(如果想选择文件就在上面的函数那样调用,但是这篇文章主要讲的是文件夹)
2 我网上查了很久,基本没有说win32ui能调用文件夹,得到文件夹路径,的方法
3 似乎tk可以,但是我不太熟悉tk的运行机制,于是就用上了pyqt5
4 以下是具体代码,里面注释很清楚了,看不懂可以自己先百度,实在不行可以评论,我看到了会回复
DelSomeFile.py
import os,sys
from PyQt5.QtWidgets import QApplication,QFileDialog
def scanFile(path):
print(path,'文件夹:\n')
for filename in os.listdir(path):
if filename.endswith('.txt'):
print('找到txt文件',filename,'是否删除?(Y or N)')
active = input()
if active.lower() == 'y':
print(active.lower(),active)
os.unlink(os.path.join(path,filename))
print(filename,"已删除")
else:
print("未删除")
#判断当前目录的子文件是否是目录,如果是,利用递归,到这个文件下
if os.path.isdir(os.path.join(path,filename)):
scanFile(os.path.join(path,filename))
if __name__ == "__main__":
#调用qt5的文件夹窗口
app = QApplication(sys.argv)
filewindow = QFileDialog()
filename = filewindow.getExistingDirectory()
path = filename
try:
scanFile(path)
except Exception as e:
print("未选择路径")
1 下面附带一个计算文件夹大小的代码,因为代码几乎一样--(虽然很鸡肋,笔记点击文件-->右键-->属性就可以得到了,但是自己写出来还是可以滴,而且可以打印这个目录下 的所有文件)
CalcFloderSize.py
#计算一个文件夹的大小--递归整个文件,目录
import os,sys
from PyQt5.QtWidgets import QApplication,QFileDialog
def scanFolder(path):
total = 0
for filename in os.listdir(path):
# print(filename)
if (os.path.isfile(os.path.join(path,filename)) == False ):
total = total + scanFolder(os.path.join(path,filename))
else:
total = total + os.path.getsize(os.path.join(path,filename))
return total
if __name__ == "__main__":
# dlg = win32ui.CreateFileDialog(1) #打开文件对话框
# dlg.SetOFNInitialDir("E:\\") #初始
# dlg.DoModal()
#
# filename = dlg.GetPathName()
# print(os.path.dirname(filename),os.path.basename(filename))
# 调用qt5的文件夹窗口
app = QApplication(sys.argv)
filewindow = QFileDialog()
filename = filewindow.getExistingDirectory()
try:
print(filename,"文件夹大小为:" ,scanFolder(filename),"字节")
except Exception as e:
print("未选择路径")