目录
代码功能介绍
1.弹窗自己选择需要处理的文件夹(代码会将文件夹内全部的Word文件删除)
2.删除完成,代码结束。
环境配置
需要用到的库:
import os
import tkinter as tk
from tkinter import filedialog
安装tkinter、filedialog这两个库的指令:
pip install tkinter
pip install filedialog
代码
功能模块介绍
首先定义一个函数,提取指定路径下的全部文件夹:一个名为 extract_directories
的函数,该函数接受一个文件路径列表作为输入,并返回这些文件路径所在文件夹的集合
import os
def extract_directories(files):
"""
从文件路径中提取出所在的文件夹,并返回一个不重复的文件夹路径列表。
Args:
files: 包含文件路径的列表
Returns:
包含文件夹路径的列表
"""
directories = set() # 创建一个空集合用于存储文件夹路径
for file in files: # 对文件路径列表进行循环遍历
directory = os.path.dirname(file) # 提取文件所在文件夹的路径
if directory not in directories: # 检查是否已经在集合中
directories.add(directory) # 如果不在集合中,则添加
return list(directories) # 将集合转换为列表并返回
然后是删除指定目录下的word文件:一个名为 delete_word_files
的函数,它接受一个目录路径作为输入,并遍历该目录及其所有子目录,删除其中所有扩展名为'.doc'或'.docx'的文件。
import os
def delete_word_files(directory):
"""
遍历指定目录及其所有子目录,删除其中所有扩展名为'.doc'或'.docx'的文件。
Args:
directory: 目标目录的路径
Returns:
无
"""
for root, dirs, files in os.walk(directory): # 使用os.walk遍历目录及其子目录
for file in files: # 遍历当前目录下的文件列表
if file.endswith('.doc') or file.endswith('.docx'): # 检查文件扩展名
file_path = os.path.join(root, file) # 构建文件的完整路径
try:
os.remove(file_path) # 删除文件
print(f"已删除文件: {file_path}") # 打印删除成功的提示信息
except OSError as e:
print(f"删除文件时出错: {file_path} - {e}") # 打印删除失败的错误信息
完整代码
import os
import tkinter as tk
from tkinter import filedialog
def delete_word_files(directory):
# 遍历指定目录及其所有子目录
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.doc') or file.endswith('.docx'):
file_path = os.path.join(root, file)
try:
os.remove(file_path)
print(f"已删除文件: {file_path}")
except OSError as e:
print(f"删除文件时出错: {file_path} - {e}")
def extract_directories(files):
# 从文件路径中提取出所在的文件夹
directories = set()
for file in files:
directory = os.path.dirname(file)
if directory not in directories:
directories.add(directory)
return list(directories)
def main():
# 创建Tk实例,但不显示主窗口
root = tk.Tk()
root.withdraw()
# 弹出文件选择对话框,允许选择多个文件
word_files = filedialog.askopenfilenames(title="选择Word文件")
# 如果用户取消了选择,则word_files将是空列表
if word_files:
# 从Word文件中提取出所在的文件夹
folders = extract_directories(word_files)
# 遍历选中的文件夹列表
for folder in folders:
delete_word_files(folder)
if __name__ == "__main__":
main()
运行效果
选择完成后,按回车即可全部删除文件夹内的全部word