如何在Python中遍历指定JSON对象的days_to_backup数组
如何遍历指定JSON对象的days_to_backup数组?
首先得提醒你一个容易踩的坑:你的命令行参数--database获取到的是字符串类型,但JSON里的db_name是整数类型,直接用==比较会匹配失败,得先做类型转换。
接下来,找到匹配的数据库条目后,直接通过keyval['daily']['days_to_backup']就能拿到目标数组,然后用普通的for循环遍历就行。
下面是修改后的完整代码,我加了详细注释:
import argparse import json import sys parser = argparse.ArgumentParser() parser.add_argument("-p", "--process", help="Process") parser.add_argument("-db", "--database", help="Database name") parser.add_argument("-t", "--type", help="Backup type") args = parser.parse_args() print( "Process:{} Database:{} Type:{} ".format( args.process, args.database, args.type, )) with open('C:/Users/llll/Desktop/f.json') as f: data = json.load(f) if args.process == 'backup': print("Asked for backup") # 先把输入的database转成整数,和JSON里的db_name类型匹配 target_db = int(args.database) for keyval in data: if keyval['db_name'] == target_db: print(f"找到匹配的数据库:{target_db}") print("Database exist") # 获取days_to_backup数组 backup_days = keyval['daily']['days_to_backup'] # 遍历数组并输出每个元素 print("需要备份的日期:") for day in backup_days: print(f"- {day}") sys.exit() print("Database doesn't exist") else: print("Currently support only backups")
关键修改点:
- 类型转换:
target_db = int(args.database),解决字符串和整数不匹配的问题 - 数组遍历:通过
keyval['daily']['days_to_backup']拿到数组后,用for day in backup_days逐个遍历
这样运行的时候,比如你输入python script.py -p backup -db 1,就能输出数据库1对应的所有备份天数了。
内容的提问来源于stack exchange,提问作者dddd4
相关产品推荐
相关产品推荐

