Python实现删除目录中除指定文件外的所有文件
解决方法:用纯Python实现(跨平台,无系统命令兼容问题)
你之前用rm、find命令报错,是因为这些是Linux/Unix系统的专属命令,而你应该是在Windows环境下运行代码——Windows的命令提示符不支持这类指令,所以才会出现"不是内部或外部命令"、"参数格式不正确"的错误。
直接用Python标准库实现,不用依赖系统命令,更稳妥:
方法1:使用os模块
import os # 目标目录路径,main.py和X同级,直接写'X'即可 target_dir = 'X' # 遍历目录下的所有文件和子目录 for filename in os.listdir(target_dir): # 跳过要保留的文件'1' if filename == '1': continue # 拼接完整文件路径 file_path = os.path.join(target_dir, filename) # 仅处理文件(如需删除子目录,可修改判断逻辑) if os.path.isfile(file_path): try: os.remove(file_path) print(f"已删除文件: {file_path}") except Exception as e: print(f"删除文件{file_path}失败: {e}")
方法2:使用pathlib模块(Python 3.4+推荐)
pathlib是更现代的路径处理方式,代码更简洁直观:
from pathlib import Path # 目标目录路径 target_dir = Path('X') # 遍历目录下的所有条目 for item in target_dir.iterdir(): # 跳过要保留的文件'1',且仅处理文件 if item.name == '1' or not item.is_file(): continue try: item.unlink() print(f"已删除文件: {item}") except Exception as e: print(f"删除文件{item}失败: {e}")
补充说明
- 如果目录X里包含子目录,且你需要删除这些子目录:可将判断
is_file()的逻辑替换为is_dir(),空目录用os.rmdir()删除,非空目录用shutil.rmtree()删除(需提前导入shutil模块)。 - 代码中的
try-except用于处理异常场景,比如文件被占用、无操作权限等情况。
内容的提问来源于stack exchange,提问作者Hawshemi
相关产品推荐
相关产品推荐

