python-すべてのjsonファイルをyamlに書き込む
3970 ワード
フォルダ下のすべてのjsonファイルを読み取り、所定のフォーマットで別のファイルに書き込み、yamlファイルを生成する機能を実現します.
後期には改善が必要かもしれません.
後期には改善が必要かもしれません.
import json
import os
from ruamel import yaml
def change_yaml():
#
dir1=os.listdir()
# print(os.listdir())
dir2=list()
dir3=list()
for i in range(len(dir1)):
if "py" not in dir1[i]:
dir2.append(dir1[i])
# print(os.listdir(dir[i]))
# print(dir2)
# yaml
test=list()
test1=list()
test2=list()
# json dirjson
dirjson=list()
for i in range(len(dir2)):
# print(os.listdir(dir2[i]))
for j in range(len(os.listdir(dir2[i]))):
# print(os.path.splitext(os.listdir(dir2[i])[j]))
# print(type(os.path.splitext(os.listdir(dir2[i])[j])))
# json
pwddata = os.getcwd() + '\\' + dir2[i] + '\\' + os.listdir(dir2[i])[j]
# print(os.getcwd() + '\\' + dir2[i] + '\\' + os.listdir(dir2[i])[j])
dirjson.append(pwddata)
# json
with open(pwddata, 'r',encoding='utf-8') as f:
x = json.dumps(json.load(f))
# json test1
test1.append(x)
# json
test2.append(dir2[i]+'_'+os.path.splitext(os.listdir(dir2[i])[j])[0])
test.append(dir2[i]+str(j)+'_test')
# print(dirjson)
# for m in range(len(test1)):
# print(test1[m])
# print(json.dumps(json.loads(test1[m])))
for m in range(len(test)):
if 'assert' in test[m]:
posturi = '/assert'
elif 'channel' in test[m]:
posturi = '/config'
elif 'industry' in test[m]:
posturi = '/inderstry'
elif 'parser' in test[m]:
posturi = '/parser'
elif 'sink' in test[m]:
posturi = '/writer'
elif 'source' in test[m]:
posturi = '/datasource'
else:
posturi = '/error'
pwdname = test[m] + '.yaml'
pwd = '..//Config//Params//xyversion//' + pwdname
with open(pwd, 'w', encoding='utf-8') as f:
#
class Dag:
def __init__(self):
self.case_suite = test[m]
self.descrpiton = test[m]
with open(dirjson[m], 'r', encoding='utf-8') as f_load:
dic2 = json.load(f_load)
dic1 = [{
'moduel_class': 'TestDatasource',
'desc': test[m],
'cases': [{
'story': 'test_'+test[m],
'desc': test[m],
'uri': posturi,
'method': 'post',
'type': 'json',
'headers':
{
'Content-Type': 'application/json',
'Token': '@super_token'},
"data": dic2,
"set_up": "",
"tear_down": "",
"asserts": "200"
}],
}
]
self.moduels = dic1
with open(pwd,'w',encoding='utf-8') as stream:
data = Dag()
yaml.dump(data.__dict__, stream=stream, Dumper=yaml.RoundTripDumper, allow_unicode=True)
if __name__ == '__main__':
data=change_yaml()