源码 DelSomeFile.py

"""
此代码用于删除文件夹下面以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("未选择路径")
"""from  __future__ import print_function
import ctypes
import os,sys
from PyQt5.QtWidgets import QApplication,QFileDialogdef is_admin():try:return ctypes.windll.shell32.IsUserAnAdmin()except:return Falsedef scanFile(path):print(path,'文件夹:n')for filename in os.listdir(path):# print(os.access(filename, os.X_OK))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__":if is_admin():# 调用qt5的文件夹窗口app = QApplication(sys.argv)filewindow = QFileDialog()filename = filewindow.getExistingDirectory()path = filenametry:scanFile(path)print('选择文件夹查询结束!!')input("按下任意键结束程序!!!")except Exception as e:print(e, "未选择路径")else:if sys.version_info[0] == 3:ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, __file__, None, 1)# else:#else是在python2.x中使用的# ctypes.windll.shell32.ShellExectueW(None,u'runas',unicode(sys.executable,unicode(__file__),None,1))

1.1 运行后弹出文件管理对话框,人性化选择文件夹路径,(可以用qt、tk)

import os,sys
from PyQt5.QtWidgets import QApplication,QFileDialog
# 调用qt5的文件夹窗口
app = QApplication(sys.argv)
filewindow = QFileDialog()
filename = filewindow.getExistingDirectory()
path = filename #此处得到你选择的文件夹路径
#print(path)

1.2 本来是用win32ui的,但是win32ui似乎不支持选择文件夹,只是支持选择文件,得到文件路径,但是通过文件路径处理也能得到文件夹路径,即使能得到文件夹路径,感觉也比较没意思

import win32ui,os
dlg = win32ui.CreateFileDialog(1) #打开文件对话框dlg.SetOFNInitialDir("E:") #初始dlg.DoModal()filename = dlg.GetPathName()#此处得到文件路径print(os.path.dirname(filename),os.path.basename(filename))#通过os对文件路径进行处理前面得到文件夹路径--dirname#后面获得文件名称--basename

2.对文件夹进行递归处理,即判断此文件夹下是否还存在文件夹,反复递归,最终遍历整个文件夹

import os,sys
def scanFile(path):print(path,'文件夹:n')#打印当前处于哪个文件夹下面--绝对路径for filename in os.listdir(path):if filename.endswith('.txt'):#判断文件名后缀是否为txt,同理可以判断后缀是否是pyprint('找到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("未删除")#如果没有输入Y就不会删除文件#判断当前目录的子文件是否是目录,如果是,利用递归,到这个文件下if os.path.isdir(os.path.join(path,filename)):scanFile(os.path.join(path,filename))#自己调用自己

3 由于部分文件夹或者说路径需要权限,于是加入调用权限功能---参考别人的代码,不能在ide中运行,要在cmd中:python DelSomeFile.py这样运行整个py文件

from  __future__ import print_function
import ctypes
import os,sys
from PyQt5.QtWidgets import QApplication,QFileDialog
#我的逻辑还是弄不太清楚,此代码如果在ide中运行,则会直接结束,不能处理
def is_admin():try:return ctypes.windll.shell32.IsUserAnAdmin()except:return False
if is_admin():# 调用qt5的文件夹窗口app = QApplication(sys.argv)filewindow = QFileDialog()filename = filewindow.getExistingDirectory()path = filenametry:scanFile(path)print('选择文件夹查询结束!!')input("按下任意键结束程序!!!")except Exception as e:print(e, "未选择路径")
else:if sys.version_info[0] == 3:ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, __file__, None, 1)# else:# ctypes.windll.shell32.ShellExectueW(None,u'runas',unicode(sys.executable,unicode(__file__),None,1))

4 到这里了,整个小工具,以我的理解能力介绍完了,我是觉得自己写这个还行,整个工具还是有点粗糙,但是应该有用,即使没有实际作用,也算是增强自己对代码的熟练把

5 最后可以通过:pyinstaller -F DelSomeFile.py 将脚本打包成一个真正的exe小工具了 ,如果喜欢可以像我一样给它加个图标(那就这样pyinstaller -i "xx.ico"-F DelSomeFile.py,这个是用相对路径,相对路径成功使用是建立在xx.ico和DelSomeFile在同一个文件夹下,如果不在就用绝对路径)

6 运行截图:

c++查询当前文件夹下文件数目_python3自动化小工具--删除某个文件夹xx后缀文件...相关推荐

  1. python遍历一个文件夹下所有excel,读取所有sheet页,然后写入另一个文件夹下对应模板的excel中

    本来想直接写入,但是我们的excel报表太麻烦了,里面表头有多处要求合并的,用python去写太要命了,想了下,设置一堆空的excel模板,这样只需要把原文件的数据读出来就可以了,简单多了 #读取文件 ...

  2. python win32选取文件夹_python小工具 | Excel的xls和xlsx格式文件转换

    众所周知Excel文件格式转换可以通过"另存为"的方式转换格式,可以说是简单方便,但是对于大量文件转换或者经常重复进行转换操作时,这种方法就很不方便. 显然利用程序对xls和xls ...

  3. java xlsx怎么转换成excel格式_python小工具 | Excel的xls和xlsx格式文件转换

    众所周知Excel文件格式转换可以通过"另存为"的方式转换格式,可以说是简单方便,但是对于大量文件转换或者经常重复进行转换操作时,这种方法就很不方便. 显然利用程序对xls和xls ...

  4. max格式转obj小工具_PDF文件转JPG等图片格式的小工具

    不点蓝字,我们哪来故事? 今天小夭给大家介绍一个好用的PDF文件转JPG/PNG等图片格式的小工具,非常简单好用.它是一款免费的软件,一款体积小巧的PDF转换为图片文件的软件.PDF转JPG工具可以将 ...

  5. c语言.jpg图片转成数组_PDF文件转JPG等图片格式的小工具

    不点蓝字,我们哪来故事? 今天小夭给大家介绍一个好用的PDF文件转JPG/PNG等图片格式的小工具,非常简单好用.它是一款免费的软件,一款体积小巧的PDF转换为图片文件的软件.PDF转JPG工具可以将 ...

  6. kindle清理小工具(清理临时文件夹)

    用过kindle的童鞋知道,kindle的documents目录下,会产生很多类似于下面的临时文件夹. 最新版软件下载地址:http://pan.baidu.com/s/1eSPG4RS 主要是,即便 ...

  7. 将搜狗浏览器中收藏夹导入到IE中的小工具

    测试了,能用.可以将搜狗中的收藏夹,转到IE中,然后可以将IE收藏夹导入到任何一种浏览器中. 工具下载:http://download.csdn.net/source/2634825

  8. kali下扫描CMS web漏洞小工具web-sorrow

    版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/7939 ...

  9. vb怎样同时打开2个excel工作簿_【赠书】不打开工作簿也能批量合并不同文件夹下多个表格的数据...

    最近推送的五篇文章: <偷懒的技术:打造财务Excel达人>到底有多畅销? <偷懒的技术2>推荐序:未来已来,你准备好了吗? 将"偷懒"进行到底,还在到处找 ...

最新文章

  1. Go语言实例化结构体——为结构体分配内存并初始化
  2. formdata接收数据怎么接收数组_LBT是什么?怎么增加通信可靠性?
  3. 第 3 章 镜像 - 018 - 镜像命名的最佳实践
  4. 互联网日报 | 字节跳动否认进军社区团购;中兴手机回归国内2C市场;华为公布5G商用一年成绩单...
  5. eclipse下添加viplugin插件的方法
  6. 光盘安装linux16.04,cobbler安装ubuntu 16.04巨慢
  7. python db2 linux 安装,python安装DB2模块
  8. 安装不成功_win10+cuda10.1+cudnn+tensorflow1.15.0安装
  9. 黑苹果 macos 教程
  10. springboot志愿者管理系统
  11. java xml中的冒号_带冒号的xml元素名称
  12. 一文看懂ArrayList的自动扩容
  13. BACnet IP通讯方式组网步骤
  14. PHP的LZF压缩扩展工具
  15. 总体样本与样本均值X拔的一个重要公式推导
  16. 计算机网络:P3.3-数据链路层(下)
  17. 5月份必火20条爆笑段子
  18. 五星好文·射频功率放大器(RF PA)概述
  19. 防盗链技术及破解方法详细解析
  20. jQuery实现下拉菜单(点击显示/隐藏)

热门文章

  1. RT-Thread在github上的教程中图片显示不出来问题的解决方法
  2. 1-1 顺序表操作集 (20 分)
  3. 小程序开发语言python_小程序是用什么语言开发的?5种最佳语言分享
  4. Tecplot中使用公式
  5. oracle10g rac启动,ORACLE 10G RAC启动与关闭
  6. oracle对某两列求和再求和_函数实战:多列条件求和
  7. post修改服务器数据源,postgresql安装及配置超详细教程
  8. 【转】!!c#文件系统操作类继承关系图
  9. 第十八节:跨域请求的解决方案和WebApi特有的处理方式
  10. VSTS TFS 强制删除签出锁定项 解除 锁定