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的导出,欢迎大家持续关注。

相关文章
|
23天前
|
XML Shell API
python ConfigParser、shutil、subprocess、ElementTree模块简解
python ConfigParser、shutil、subprocess、ElementTree模块简解
|
23天前
|
存储 算法 数据库
使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
`hashlib` 是 Python 中用于实现哈希功能的模块,它可以将任意长度的输入通过哈希算法转换为固定长度的输出,即散列值。该模块主要用于字符串加密,例如将用户名和密码转换为不可逆的散列值存储,从而提高安全性。`hashlib` 提供了多种哈希算法,如 `md5`、`sha1`、`sha256` 等。
35 1
|
11天前
|
数据采集 数据挖掘 数据处理
使用Python和Pandas处理CSV数据
使用Python和Pandas处理CSV数据
43 5
|
11天前
|
Java Serverless Python
探索Python中的并发编程与`concurrent.futures`模块
探索Python中的并发编程与`concurrent.futures`模块
15 4
|
22天前
|
API Python
python ratelimit模块
python ratelimit模块
|
22天前
|
Python
像导入Python模块一样导入ipynb文件
像导入Python模块一样导入ipynb文件
|
23天前
|
Python
如何最简单、通俗地理解Python模块?
如何最简单、通俗地理解Python模块?
|
22天前
|
算法 Python
python tarfile模块
python tarfile模块
|
24天前
|
SQL 关系型数据库 MySQL
Python之MySQL操作及Paramiko模块操作
Python之MySQL操作及Paramiko模块操作
|
22天前
|
Python
如何在 Python 中导入模块
【8月更文挑战第29天】
20 1