python编写的删除特定类型文件和删除空文件夹脚本
# python 编写的两个小脚本新人第一次发帖,欢迎各位大佬指正!
## 删除特定类型文件
脚本使用方法:
`python 删除特定类型文件.py需要删除的文件夹路径(当前文件夹可直接用 . ) 需要删除的文件类型(如 txt,jpg 等)`
```python
"""
@Time : 2021/8/7 10:30
@AuThor : wupeng
@file : 递归删除特定类型文件.py
@Desc : 递归删除当前文件夹及其子文件夹中特定类型的文件
"""
import os
import argparse
count = 0
def rm_specific_files_recursive(work_dir, spec_ext):
"""
递归删除指定文件夹中的特定类型文件
@Param work_dir: 指定的文件夹
@param spec_ext: 指定的需要删除的文件扩展类型
@return:
"""
# 1. 遍历当前文件夹中的所有文件
for filename in os.listdir(work_dir):
abs_path = os.path.join(work_dir, filename)
# 2. 如果是文件
# 判断是否为指定类型,并决定是否删除
if os.path.isfile(abs_path):
rm_specific_file(abs_path, spec_ext)
# 3. 如果是文件夹
# 递归调用该方法
else:
rm_specific_files_recursive(abs_path, spec_ext)
def rm_specific_file(abs_path, spec_ext):
"""
删除特定类型文件
@param abs_path: 文件绝对路径
@param spec_ext: 特定的文件类型
@return
"""
global count
old_ext = os.path.splitext(abs_path)[-1]
if old_ext == spec_ext:
os.remove(abs_path)
count += 1
def set_args():
"""
指定命令行中参数的传递方式
"""
parser = argparse.ArgumentParser(
description='递归删除当前文件夹及其子文件夹中特定类型的文件'
)
parser.add_argument('work_dir', metavar='WORK_DIR', type=str, nargs=1,
help='需要删除的文件夹')
parser.add_argument('spec_ext', metavar='SPEC_EXT', type=str, nargs=1,
help='需要删除的文件格式')
return parser
def get_args():
"""
获取参数
"""
parser = set_args()
args = vars(parser.parse_args())
work_dir = args['work_dir']
spec_ext = args['spec_ext']
if not spec_ext.startswith('.'):
spec_ext = '.' + spec_ext
return work_dir, spec_ext
def main():
global count
try:
work_dir, spec_ext = get_args()
except Exception as e:
raise(e)
rm_specific_files_recursive(work_dir, spec_ext)
print('共删除了 %d 个文件' % count)
if __name__ == '__main__':
main()
```
## 删除空文件夹
脚本使用方法:
`python 2-删除空文件夹.py 需要删除的文件夹路径(当前文件夹可直接用 . )`
```python
"""
@Time : 2021/8/10 09:13
@Author : wupeng
@File : 2-删除空文件夹.py
@Desc : 删除给定目录中所有为空的文件夹,如果给定目录为空,也删除
"""
import argparse
import os
count = 0
def rm_empty_dir_recursive(work_dir):
"""
递归删除空文件夹
优先深入到最后一个文件夹
:param work_dir: 需要判断的主目录
:return:
"""
global count
files = os.listdir(work_dir)
for fd in files:
abs_path = os.path.join(work_dir, fd)
if os.path.isdir(abs_path):
print(abs_path)
rm_empty_dir_recursive(abs_path)
count += 1
if not os.listdir(work_dir):
os.rmdir(work_dir)
def set_args():
parser = argparse.ArgumentParser(description='删除目录中空文件夹')
parser.add_argument('work_dir', metavar='WORK_DIR', type=str, nargs=1,
help='需要删除的空文件夹')
return parser
def get_args():
parser = set_args()
args = vars(parser.parse_args())
work_dir = args['work_dir']
return work_dir
def main():
global count
work_dir = get_args()
rm_empty_dir_recursive(work_dir)
print('共删除了 %d 个空文件夹' % count)
if __name__ == '__main__':
main()
``` 还有一点点BUG,不过常见的是够用了 学习了。。大神可以指点为一下
感谢分享宝贵经验
++
%C2%A5%D6%F7%BA%C3%A3%AC%C7%EB%BD%CC%B8%F6%CE%CA%CC%E2+%A3%AC%CA%D7%CF%C8%B2%BB%D2%AA%D0%A6%CE%D2%A3%A8%B2%BB%B3%DC%CF%C2%CE%CA%B5%C4%A3%A9%0D%0A%CA%D7%CF%C8%C4%FA%B7%A2%B5%C4%D5%E2%B8%F6%B6%D4%CE%D2%CA%C7%BA%DC%D3%D0%B0%EF%D6%FA%B5%C4%A3%A1%0D%0A%B5%AB%CA%C7%CE%D2%B2%BB%BB%E1%D4%CB%D0%D0%A1%A3%A1%A3%0D%0A%CA%C7%B2%BB%CA%C7%D5%B3%CC%F9%BC%C7%CA%C2%B1%BE%B8%C4%B3%C9.py%B5%C4%BA%F3%D7%BA+%CB%AB%BB%F7%BE%CD%BF%C9%D2%D4%A3%BF%0D%0A%BB%B9%CA%C7%D2%AA%D7%A8%C3%C5%B5%C4%B3%CC%D0%F2%B4%F2%BF%AA%A3%BF%0D%0A%CE%D2%D6%B1%BD%D3%B5%E3%B5%C4%B8%B4%D6%C6%B4%FA%C2%EB%A3%AC%CE%D2%D6%B1%BD%D3%D5%B3%CC%F9%BE%CD%BF%C9%D2%D4%C2%F0%A3%BF%0D%0A%BB%B9%CA%C7%D2%AA%C9%BE%B3%FD+%D2%BB%CF%C2%C4%DA%C8%DD%BB%F2%C9%BE%B3%FD%B5%BD%C4%C4%C0%EF%A3%BF%0D%0A%0D%0A%22%22%22%0D%0Ahome.php%3Fmod%3Dspace%26uid%3D238618+++%3A+2021%2F8%2F7+10%3A30%0D%0Ahome.php%3Fmod%3Dspace%26uid%3D686208+%3A+wupeng%0D%0Ahome.php%3Fmod%3Dspace%26uid%3D267492+++%3A+%B5%DD%B9%E9%C9%BE%B3%FD%CC%D8%B6%A8%C0%E0%D0%CD%CE%C4%BC%FE.py%0D%0A%40Desc+++%3A+%B5%DD%B9%E9%C9%BE%B3%FD%B5%B1%C7%B0%CE%C4%BC%FE%BC%D0%BC%B0%C6%E4%D7%D3%CE%C4%BC%FE%BC%D0%D6%D0%CC%D8%B6%A8%C0%E0%D0%CD%B5%C4%CE%C4%BC%FE%0D%0A%22%22 为什么我的回复 会变成这样++
%C4%E3%BA%C3%C2%A5%D6%F7%A3%AC%CE%D2%CA%C7%D0%A1%B0%D7%A1%A3%C7%EB%BD%CC%D2%BB%CF%C2%D5%E2%B8%F6%D4%F5%C3%B4%D3%C3%A3%BF+%B8%B4%D6%C6%B5%BD%BC%C7%CA%C2%B1%BE%B8%C4%B3%C9py%B5%C4%BA%F3%D7%BA%BB%F2BAT%C2%F0%A3%BF+%CE%D2%B5%E3%B5%C4%B8%B4%D6%C6%B4%FA%C2%EB+%BF%C9%D2%D4%D6%B1%BD%D3%D5%B3%CC%F9%C2%F0%A3%BF%BB%F2%D5%DF%D2%AA%C9%BE%B3%FD%B5%E3%CA%B2%C3%B4%B6%AB%CE%F7%C2%F0%A3%BF+%CE%D2%CF%B9%D7%C1%C4%A5%C1%CB%BA%C3%BC%B8%B7%D6%D6%D3%C1%CB%A1%A3%BF%D5%CE%C4%BC%FE%BB%B9%D4%DA%A1%A3%A1%A3%A1%A3+ v104570998 发表于 2022-6-25 22:41为什么我的回复 会变成这样
换个浏览器吧
++
%BA%C3%CF%F1%CA%C7+%B4%F2%C1%CB%28.+P+Y%29%BA%F3%BE%CD%B1%E4%B3%C9%C2%D2%C2%EB%C1%CB 像是 是 打了 “点皮外” 就变了乱码
页:
[1]