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("未选择路径")

 

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