马儿慢些走

人生惶惶,悲喜一场。

Python argparse store_action实现默认运行功能(KIMI)

本文为和AI大模型KIMI的对话,实现命令行工具中常用的对程序中途提问都默认继续运行的功能,仅供参考。


User: 我的python程序读取命令行参数进行执行,中途会询问用户是否继续,使用 y 和 n 回答,怎么通过 -y 这种形式默认执行下去?

Kimi: 你可以用标准库 argparse 把 -y / --yes 做成一个「一旦给出就自动写死答案」的开关,
然后在原来 input(...) 的地方判断:如果开关给了,就直接用写死的答案,否则照常提问。
完整最小示例:

#!/usr/bin/env python3
import argparse

def yes_no(prompt, *, assume_yes=False):
    """询问用户,除非 assume_yes 为真则直接返回 True。"""
    if assume_yes:
        print(f"{prompt} [自动回答 y]")
        return True
    while True:
        ans = input(f"{prompt} (y/n) ").strip().lower()
        if ans in {"y", "yes"}:
            return True
        if ans in {"n", "no"}:
            return False
        print("请输入 y 或 n")

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "-y", "--yes",
        action="store_true",
        help="对所有交互式提问自动回答 yes"
    )
    args = parser.parse_args()

    # 你的业务逻辑
    if yes_no("是否继续?", assume_yes=args.yes):
        print("继续执行……")
    else:
        print("用户选择退出")
        return

    # 后面还有提问也一样
    if yes_no("是否删除文件?", assume_yes=args.yes):
        print("文件已删除")

if __name__ == "__main__":
    main()

运行效果:

$ python demo.py
是否继续? (y/n) y
继续执行……
是否删除文件? (y/n) n
文件未删除

$ python demo.py -y
是否继续? [自动回答 y]
继续执行……
是否删除文件? [自动回答 y]
文件已删除

要点

  1. argparseaction="store_true"-y 变成布尔开关。
  2. 把「提问」封装成函数,内部根据开关决定是否直接打印并返回 True
  3. 脚本里所有需要交互的地方都调用这个函数即可。

posted on 2025-10-13 16:46  马儿慢些走  阅读(16)  评论(0)    收藏  举报

导航