Python模块之CSV导出(一)

简介: Python模块之CSV导出(一)

最近接触到CSV相关的导出需求,考虑到这是一个比较常用的需求,结合自己的一些思考实践,在这儿记录下来分享给大家。


CSV是什么?

按照我的理解,简单来说就是以逗号进行分隔我们的数据,是一种以.csv结尾的文本文件。

维基百科这样的解释:

CSV:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)

纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。


CSV的优点

看了定义我们知道CSV有如下优点:

  1. 适合存放结构化信息,较为通用(CSV通用标准并不存在)
  2. 数据体积更小,创建分方便(本身是文本格式对比Excel这一类数据本身带有格式)
  3. Windows环境下CSV默认打开方式是Excel。


模块介绍

因为这些优点,我们通常把CSV用在各个系统之间进行数据转移,为了方便大家理解及日常使用,我这里分享两种CSV导出的方式。

今天先给大家分享一种CSV导出的方式,也就是用Python内置CSV模块直接进行处理。

由于CSV模块的简单,我们常用模块主要用到 writerwriterow这两个方法。


其中writer方法主要返回一个writer对象,该对象负责在给定的类文件对象上将用户数据转换为带分隔符的字符串。

writerow将行参数写入写入器的文件对象,按照当前方言(dialect)进行格式化。


我就不详细介绍更多使用方法了,感兴趣的同学可以参考官方文档或者像我上篇文章那样,调出Alfred输入dash csv调出离线文档所有的资料都有了。参考「私货」你必须拥有的两款神器

当然你也可以用ipython进行shell环境进行查看学习:

image.png


一个例子

我们直接上一个CSV文件导出案例。

import csv    
    import codecs
    tests = models.Test.objects.all()
    filename = 'test.csv'
    with open(filename, 'wb') as test_file:
        headers = [ '性别','年龄','身份证',
        ]
        test_file.write(codecs.BOM_UTF8) # 解决乱码问题
        csvwriter = csv.writer(test_file, dialect='excel')
        csvwriter.writerow(headers)
        for test in tests:
            test_info = [
                str(test.sex),
                str(test.age),
                str(test.idcard),
            ]
            csvwriter.writerow(test_info)


上面只是一个简单的演示过程,在真实工程化情况中,我们需要考虑CSV导出的耗时问题,定时触发执行等等,所以可能需要加入Celery进行异步任务,执行过程考虑邮件发送带附件等等情况。


另外在上面的代码中需要注意的是,我在在文件中引入了codecs模块,并且添加了test_file.write(codecs.BOM_UTF8)这样一行代码,这个主要是解决Excel打开乱码的问题。


由于时间有限今天暂时给大家介绍第一种导出的情况,下次我们介绍另外一种方式进行CSV的导出,欢迎大家持续关注。

相关文章
|
14天前
|
机器学习/深度学习 存储 Python
|
15天前
|
Python
python_读写excel、csv记录
python_读写excel、csv记录
16 0
|
21小时前
|
Python Windows
python中的异常与模块
python中的异常与模块
8 1
|
4天前
|
前端开发 JavaScript Python
使用Python读取本地行情csv文件,做出web网页画出K线图实现案例
【5月更文挑战第4天】使用Python绘制K线图的步骤:1) 安装pandas, matplotlib和Flask;2) 用pandas读取CSV文件并处理数据;3) 创建Flask应用,渲染包含K线图数据的HTML;4) 编写HTML,使用ECharts库绘制K线图。
23 0
|
10天前
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{"name": "John", "age": 30, "city": "New York"}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
16 1
|
11天前
|
Python
Python实现压缩解压---tarfile模块详解
Python实现压缩解压---tarfile模块详解
|
11天前
|
Linux Python Windows
Python中time和datetime模块详解
Python中time和datetime模块详解
|
11天前
|
存储 Linux 数据安全/隐私保护
python的压缩模块zipfile详解
python的压缩模块zipfile详解
|
11天前
|
Linux Python Windows
python的os模块详细解读(二)
python的os模块详细解读(二)
|
11天前
|
移动开发 Linux Shell
python的os模块详细解读(一)
python的os模块详细解读(一)
python的os模块详细解读(一)