标签:rand str 生成 with open enumerate range 文件 方式 new
import csv
import random
class XmlFormat(object):
def __init__(self):
self.wf = open(‘data/res_location.xml‘, ‘w‘, encoding=‘utf-8‘)
self.add_header()
def add_header(self):
header = """<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
"""
# print(header)
self.wf.write(header)
def add_tail(self):
tail = """
</data>
</odoo>
"""
self.wf.write(tail)
def get_random(self):
return random.randrange(1000, 9999, 1)
def readfile(self):
with open(‘data/location.csv‘, ‘r‘, encoding=‘utf-8‘) as f:
reder = csv.reader(f, delimiter=‘,‘)
for i, line in enumerate(reder):
if not line:
continue
# todo: 自动抓取表头信息,并设置键值对:
if i == 0:
# 存储表头字段
if not line:
raise
header_line = line
continue
data = {}
# print(line)
# 处理每一行的数据
for e, var in enumerate(line):
# print(e,var,header_line[e])
if header_line[e] == ‘new-code‘:
data[header_line[e]] = var or self.get_random()
elif header_line[e] == ‘is_warehouse‘:
data[header_line[e]] = var or 0
else:
data[header_line[e]] = var
if (i) % 1000 == 0:
# 关闭之前的文件
self.add_tail()
self.wf.close()
self.wf = open(‘data/res_location.xml‘.format(i), ‘w‘, encoding=‘utf-8‘)
print(‘\‘data/res_location{}.xml\‘,‘.format(i))
self.add_header()
# 这里传递参数的方式可以使用**kw
self.generate_xml_code(**data)
def generate_xml_code(self, **kwargs):
"""
设置xml 模板,并生成相应的xml文本,
大括号中的参数需要和csv 文件的字段信息保持一致,如{extra_id} 对应csv 文件中的extra_id字段
xml 模板按照可按照自己的需求进行更换.
注: csv 文件的字段不能重复.
:param kwargs:
:return:
"""
str_format = """
<record id="{extra_id}" model="stock.location">
<field name="name">{name}</field>
<field name="usage">internal</field>
<field name="is_warehouse">{is_warehouse}</field>
<field name="active">1</field>
<field name="company_id" ref="base.main_company"/>
<field name="location_id" ref="{extra_id_parent}"/>
<field name="barcode">{new-code}</field>
</record>
"""
res = str_format.format(**kwargs)
self.wf.write(res)
def __del__(self):
self.add_tail()
self.wf.close()
if __name__ == ‘__main__‘:
a = XmlFormat()
a.readfile()
odoo 导入文件xml制作,使用csv 文件制作xml 文件
标签:rand str 生成 with open enumerate range 文件 方式 new
原文地址:https://www.cnblogs.com/qianxunman/p/13307604.html