處理復制結構的yaml檔案,需求是輸入運行引數查找到和修改對應的值,例: sys.argv[1 ] =“a/b/[0]/.../name”,輸入代表各個層級,正常查詢是,A = yaml.load["filename"], value = A["a"]["b"][0]...["name"],但由于引數不確定,查詢到準確地方沒有頭緒,請教各位大神有什么好的方法沒?
uj5u.com熱心網友回復:
yaml檔案如下:name: Tom Smith
age: 37
a1:
spouse:
name: Jane Smith1
age: 25
children:
- name: Jimmy Smith2
age: 15
- name1: Jenny Smith3
age1: 12
a2:
spouse:
name: Jane Smith4
age: 25
children1:
- name: Jimmy Smith5
age: 15
- name1: Jenny Smith6
age1: 12
a2:
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name1: Jenny Smith
age1: 12
import yaml
name = 'a1/children/[1]/a2/children1/[1]/name1'
path = r"C:\Users\...\work_test\yaml.yaml"
yaml_obj = yaml.load(open(path, 'r'), Loader=yaml.FullLoader)
keys = name.split('/')
b = yaml_obj[keys[0]]
for key in keys[1:]:
if key.startswith("["):
key = int(key[1:-1])
b = b[key]
print("{}: {}".format(key, b))
else:
b = b[key]
print("{}: {}".format(key, b))
print b
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/132417.html
上一篇:大佬們求助
