You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 20:37:37