"""
此代碼用於刪除文件夾下面以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("未選擇路徑")