python 编写的两个小脚本
新人第一次发帖,欢迎各位大佬指正!
删除特定类型文件
脚本使用方法:
python 删除特定类型文件.py 需要删除的文件夹路径(当前文件夹可直接用 . ) 需要删除的文件类型(如 txt,jpg 等)
"""
@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'][0]
spec_ext = args['spec_ext'][0]
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 需要删除的文件夹路径(当前文件夹可直接用 . )
"""
@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'][0]
return work_dir
def main():
global count
work_dir = get_args()
rm_empty_dir_recursive(work_dir)
print('共删除了 %d 个空文件夹' % count)
if __name__ == '__main__':
main()
|