如何利用argparse实现CMD快捷调用Python代码指定账户更新?
整合多账户更新代码,用argparse实现命令行快捷调用
你选argparse绝对是正确的思路!咱们一步步把三个账户的更新逻辑整合到单份代码里,还能通过命令行灵活指定要更新的账户。
第一步:把每个账户的更新逻辑封装成独立函数
先把你现有的Cloud更新逻辑抽成函数,另外两个账户同理,再写一个update_all()来批量执行所有更新:
def _msg(updated): return "was updated" if updated else "already up-to-date" def update_cloud(): Cloud_Updater = Cloud() updated = Cloud_Updater.update() print(f"Cloud {_msg(updated)}.\n") def update_drive(): # 替换成第二个账户的实际更新逻辑 Drive_Updater = Drive() updated = Drive_Updater.update() print(f"Drive {_msg(updated)}.\n") def update_dropbox(): # 替换成第三个账户的实际更新逻辑 Dropbox_Updater = Dropbox() updated = Dropbox_Updater.update() print(f"Dropbox {_msg(updated)}.\n") def update_all(): update_cloud() update_drive() update_dropbox()
第二步:用argparse配置命令行参数
接下来用argparse定义命令行可接受的参数,限定用户只能指定三个账户或「全部更新」选项:
import argparse if __name__ == "__main__": # 创建参数解析器 parser = argparse.ArgumentParser(description="Update multiple cloud account informations.") # 添加位置参数,限定可选值为三个账户和all parser.add_argument( "target", choices=["cloud", "drive", "dropbox", "all"], help="Specify which account to update: cloud, drive, dropbox, or all" ) # 解析命令行传入的参数 args = parser.parse_args() # 用字典映射参数到对应函数(比一堆if-elif更简洁) update_actions = { "cloud": update_cloud, "drive": update_drive, "dropbox": update_dropbox, "all": update_all } # 执行对应的更新操作 update_actions[args.target]()
第三步:测试命令行调用
现在你就能通过命令行快捷调用不同的更新逻辑了:
- 只更新Cloud账户:
python your_script_name.py cloud - 更新所有账户:
python your_script_name.py all - 更新Drive账户:
python your_script_name.py drive
如果后续需要支持同时更新多个账户(比如python your_script.py cloud drive),只需要把参数的nargs设置为'+',然后遍历执行对应函数即可,这个版本先满足你最核心的需求~
内容的提问来源于stack exchange,提问作者shaheed313
相关产品推荐
相关产品推荐

