为了账号安全,请及时绑定邮箱和手机立即绑定

分离配置文件并拆分密钥收集在自己的文件中

分离配置文件并拆分密钥收集在自己的文件中

30秒到达战场 2022-04-23 17:04:14
这个插件有一个新的更新,所以所有的“任务”都必须放在一个单独的文件中。因为有超过 100+ 我不想手动做。旧文件(“config.yml”)如下所示:“quests.{questname}.{attributes}”{attributes} 作为属于当前任务的每个键。新文件应以 {questname} 作为名称并在其中包含属性。这应该对所有文件进行。config.yml(旧文件)quests:  farmingquest41:    tasks:      mining:        type: "blockbreakcertain"        amount: 100        block: 39    display:      name: "&a&nFarming Quest:&r &e#41"      lore-normal:      - "&7This quest will require you to farm certain"      - "&7resources before receiving the reward."      - "&r"      - "&6* &eObjective:&r &7Mine 100 brown mushrooms."      - "&6* &eProgress:&r &7{mining:progress}/100 brown mushrooms."      - "&6* &eReward:&r &a1,500 experience"      - "&r"      lore-started:      - "&aYou have started this quest."      type: "BROWN_MUSHROOM"    rewards:     - "xp give {player} 1500"    options:      category: "farming"      requires:       - ""      repeatable: false      cooldown:        enabled: true        time: 2880我所做的是遍历数据中的每个“任务”,这会创建一个位于“任务/任务/{questname}.yml”中的带有任务属性的“输出文件”。但是,我似乎可以让它工作,得到一个“字符串索引必须是整数”。import yamlinput = "Quests/config.yml"def splitfile():    try:        with open(input, "r") as stream:            data = yaml.load(stream)            for quest in data:                  outfile = open("Quests/quests/" + quest['quests'] + ".yml", "x")                yaml.dump([quest], outfile)    except yaml.YAMLError as out:        print(out)splitfile()循环遍历数据中的每个“任务”,这将创建一个位于“任务/任务/{任务名称}.yml”中的具有任务属性的“输出文件”。
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

错误来自quest['quests']. 您的数据是一个字典,其中一个条目名为quests

for quest in data:
  print(quest) # will just print "quests"

要正确迭代您的 yaml,您需要:

  1. 获取任务字典,使用data["quests"]

  2. 对于 quests 字典中的每个条目,使用条目键作为文件名并转储文件中的条目值。

这是您的脚本的修补版本:

def splitfile():

    try:

        with open(input, "r") as stream:

            data = yaml.load(stream)

            quests = data['quests'] # get the quests dictionary

            for name, quest in quests.items():  

                # .items() returns (key, value), 

                # here name and quest attributes

                outfile = open("Quests/quests/" + name + ".yml", "x")

                yaml.dump(quest, outfile)

    except yaml.YAMLError as out:

        print(out)


splitfile()


查看完整回答
反对 回复 2022-04-23
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信