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]
文件已删除
要点
argparse的action="store_true"把-y变成布尔开关。- 把「提问」封装成函数,内部根据开关决定是否直接打印并返回
True。 - 脚本里所有需要交互的地方都调用这个函数即可。
浙公网安备 33010602011771号