1. 基础确认机制
任务目标
构建一个命令行工具,在执行删除文件这类不可逆操作前,强制要求用户输入 y 进行确认。若用户未输入 y(包括输入 n、其他字符或直接回车),则取消操作并给出提示。该案例演示人机协同中最基础的“关键操作前二次确认”护栏模式。
实现方案
使用 Python 标准库 os 和 sys,不依赖任何第三方包。核心逻辑为:
- 接收命令行参数作为目标文件路径;
- 展示将要执行的操作并请求确认;
- 仅当用户输入严格等于
y时执行删除,否则安全退出。
完整代码
import os
import sys
def confirm_and_delete(filepath):
"""删除前要求用户输入'y'确认,否则取消操作。"""
if not os.path.exists(filepath):
print(f"错误:文件不存在 - {filepath}")
return False
print(f"即将删除文件:{filepath}")
print("此操作不可撤销。")
# 核心确认逻辑:仅接受精确的 'y'
user_input = input("请输入 'y' 确认删除,输入其他任意内容取消:").strip().lower()
if user_input != 'y':
print("操作已取消。")
return False
try:
os.remove(filepath)
print(f"已删除:{filepath}")
return True
except Exception as e:
print(f"删除失败:{e}")
return False
if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法:python confirm_delete.py <目标文件路径>")
sys.exit(1)
target = sys.argv[1]
success = confirm_and_delete(target)
sys.exit(0 if success else 1)
运行与验证
运行方式:
# 准备测试文件
echo "测试内容" > /tmp/test_file.txt
# 运行程序(传入文件路径)
python confirm_delete.py /tmp/test_file.txt
验证路径与通过条件:
| 场景 | 输入 | 预期结果 | 判定标准 |
|---|---|---|---|
| 确认删除 | y | 文件被删除,输出“已删除” | ls /tmp/test_file.txt 提示不存在,程序退出码为 0 |
| 取消删除 | n 或直接回车 | 文件保留,输出“操作已取消” | ls /tmp/test_file.txt 仍能看到文件,程序退出码为 1 |
| 文件不存在 | 任意 | 提示“文件不存在” | 程序退出码为 1,无删除动作 |
关键说明:
- 确认输入使用
.strip().lower()归一化,因此Y或带空格的y均视为有效确认; - 除
y外的任何输入(包括yes、Y以外的组合)都会触发取消分支,确保护栏的严格性; - 程序退出码可用于脚本自动化集成:0 表示删除成功,1 表示取消或失败。