亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

分離配置文件并拆分密鑰收集在自己的文件中

分離配置文件并拆分密鑰收集在自己的文件中

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 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號