python 自动删除文件_python3自动化小工具--删除某个文件夹xx后缀文件

源码 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,QFileDialog

def is_admin():

try:

return ctypes.windll.shell32.IsUserAnAdmin()

except:

return False

def 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 = filename

try:

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,同理可以判断后缀是否是py

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("未删除")#如果没有输入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 = filename

try:

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 运行截图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值