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()