Python批量将csv文件转化成xml文件的实例


Posted in Python onMay 10, 2021

一、前言

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列,通常都是纯文本文件。

可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

二、Python代码实现

导入用到的库

from xml.etree.ElementTree import Element, ElementTree
import csv
from pathlib import Path
import os

创建一个文件夹,用来保存转换后的xml文件

# 创建一个文件夹  用来保存转换后的xml文件
path = os.path.join('xml_file')
if not os.path.exists(path):
    os.mkdir(path)

获取所有待转换的csv文件

# 获取所有待转换的csv文件  返回列表
def list_csv():
    file_path = input('请输入你存放csv文件的路径:')
    p = Path(file_path)
    csv_files = p.glob('**/*.csv')
    csv_files = [str(csv_file) for csv_file in csv_files]
    return csv_files

将 csv 文件转换为 xml 文件

# 将csv文件转换为xml
def csv_to_xml(file_name):
    print(file_name)
    with open(file_name, 'r', encoding='utf-8') as f:   # 读取csv文件
        reader = csv.reader(f)
        header = next(reader)   # 跳过表头
        root = Element('Datas')
        print('root', len(root))
        # 处理转换
        for row in reader:
            erow = Element('row')
            root.append(erow)
            for tag, text in zip(header, row):
                e = Element(tag)
                e.text = text
                erow.append(e)
    beatau(root)
    return ElementTree(root)


def beatau(e, level=0):
    if len(e) > 0:
        e.text = '\n' + '\t' * (level + 1)
        child = None
        for child in e:
            beatau(child, level + 1)
        child.tail = child.tail[:-1]
    e.tail = '\n' + '\t' * level

主函数调用

if __name__ == '__main__':
    csv_list = list_csv()
    print(csv_list)
    for index_, item in enumerate(csv_list, start=1):
        print(index_, item)
        et = csv_to_xml(item)
        et.write(path + '/' + 'test_{}.xml'.format(index_), encoding='utf-8')

结果如下:

Python批量将csv文件转化成xml文件的实例

用编辑器打开可以看到 xml 文件的内容(我用的Sublime Text),如下所示

Python批量将csv文件转化成xml文件的实例

以上就是Python批量将csv文件转化成xml文件的实例的详细内容,更多关于Python csv文件转化成xml文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python制作爬虫并将抓取结果保存到excel中
Apr 06 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
Sanic框架蓝图用法实例分析
Jul 17 Python
浅谈pycharm下找不到sqlalchemy的问题
Dec 03 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
python selenium操作cookie的实现
Mar 18 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
python绘图pyecharts+pandas的使用详解
Dec 13 Python
Python的信号库Blinker用法详解
Dec 31 Python
python playwright之元素定位示例详解
Jul 23 Python
python基础之爬虫入门
python设置 matplotlib 正确显示中文的四种方式
提取视频中的音频 Python只需要三行代码!
Python-typing: 类型标注与支持 Any类型详解
May 10 #Python
超详细Python解释器新手安装教程
Python机器学习三大件之一numpy
python实现自动清理文件夹旧文件
May 10 #Python
You might like
程序员编程十条戒律
2009/07/09 PHP
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
vue文件运行的方法教学
2019/02/12 Javascript
微信小程序上传图片到php服务器的方法
2019/05/23 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
Python计时相关操作详解【time,datetime】
2017/05/26 Python
python文本数据相似度的度量
2018/03/12 Python
Python3爬楼梯算法示例
2019/03/04 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
static关键字的用法
2013/10/07 面试题
服装设计专业自荐书范文
2013/12/30 职场文书
2014年团队工作总结
2014/11/24 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
高中化学教学反思
2016/02/22 职场文书
区域销售大会开幕词
2016/03/04 职场文书
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android
SQL Server中使用表变量和临时表
2022/05/20 SQL Server