python with open as yaml_pythonjinja2使用yamlcon从json模板创建文件

if len(sys.argv) != 3:

print "usage: python render_template.py [yaml_file] [jinja_template_file]"

sys.exit(1)

with open(sys.argv[1], "r") as stream:

config = yaml.safe_load(stream)

with open(sys.argv[2], "r") as stream:

template_text = stream.read()

template = Template(template_text)

print template.render(config)

test.yaml:

^{pr2}$

在sample.json.templete在[{

"test1":

{

"objectName": "{{Application.Hosts}}",

}

}]

我跑的时候python ./render.py ./test.yaml ./sample.json.templete > sample.json

我明白了[{

"test1":

{

"objectName": ['a' , 'b'],

}

}]

但是由于我要生成一个json文件,所以我需要["a", "b"]

也就是说,我要用双引号把这个名单写上。我怎样才能最好地实现它?如何将单引号中的字符串列表转换为双引号中的字符串列表?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码实现: ```python import os import json import yaml # 设置标签类别 classes = ["object"] # 待转换json文件所在的文件夹 json_folder = "/path/to/json/folder" # 转换后yaml文件所在的文件夹 yaml_folder = "/path/to/yaml/folder" # 遍历json文件 for filename in os.listdir(json_folder): if filename.endswith(".json"): with open(os.path.join(json_folder, filename), "r") as f: data = json.load(f) img_width = data["imageWidth"] img_height = data["imageHeight"] objects = [] for shape in data["shapes"]: label = shape["label"] points = shape["points"] xmin = min([point[0] for point in points]) ymin = min([point[1] for point in points]) xmax = max([point[0] for point in points]) ymax = max([point[1] for point in points]) object_dict = {"name": label, "xmin": xmin, "ymin": ymin, "xmax": xmax, "ymax": ymax} objects.append(object_dict) # 写入yaml文件 yaml_filename = os.path.splitext(filename)[0] + ".yaml" with open(os.path.join(yaml_folder, yaml_filename), "w") as f: yaml_dict = {"image": os.path.splitext(filename)[0] + ".jpg", "width": img_width, "height": img_height, "depth": 3, "objects": objects, "classes": classes} yaml.dump(yaml_dict, f) # 写入txt文件 txt_filename = os.path.splitext(filename)[0] + ".txt" with open(os.path.join(yaml_folder, txt_filename), "w") as f: for obj in objects: class_index = classes.index(obj["name"]) x_center = (obj["xmin"] + obj["xmax"]) / 2 / img_width y_center = (obj["ymin"] + obj["ymax"]) / 2 / img_height width = (obj["xmax"] - obj["xmin"]) / img_width height = (obj["ymax"] - obj["ymin"]) / img_height txt_line = "{} {:.6f} {:.6f} {:.6f} {:.6f}\n".format(class_index, x_center, y_center, width, height) f.write(txt_line) ``` 这段代码会遍历指定文件夹中所有的json文件,将每个文件中的标注信息转换为yolo格式的yaml文件和txt文件。其中,yaml文件用于在labelimg中显示标注信息,txt文件用于训练yolo模型。在此代码中,我们将标签类别统一设置为"object",如果需要添加其他类别,可以修改`classes`列表。同时,这段代码会保持新文件与原文件名相同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值