python調用文件對話框獲得文件夾路徑名稱--實用刪除文件小工具

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章