赞
踩
python对于csv的解读:
CSV (Comma Separated Values) 格式是电子表格和数据库中最常见的输入、输出文件格式。在 RFC 4180 规范推出的很多年前,CSV 格式就已经被开始使用了,由于当时并没有合理的标准,不同应用程序读写的数据会存在细微的差别。这种差别让处理多个来源的 CSV 文件变得困难。但尽管分隔符会变化,此类文件的大致格式是相似的,所以编写一个单独的模块以高效处理此类数据,将程序员从读写数据的繁琐细节中解放出来是有可能的。
在没有了解csv之前,一直都是使用openpyxl库来创建excel,然后保存数据。
这里就涉及到一个问题:第三方库,如果其他人并没有安装第三方库怎么办呢?这个问题很多人可能会发笑,让用户装一个不就好了,pip install openpyxl 一条命令解决的事。有没有一种可能性就是用户无法,或者不方便连接外网?亦或者用户根本不清楚安装命令,再或者安装过程如果出现问题呢?解决方法自然还有很多,比如直接打包为exe程序,如果用户还有输入,还要设计GUI界面,这不是大大复杂化了吗?
把用户当成傻子,你以为的入门的知识对很多不涉及这个方向的人而言就是很难理解,例如和windows小白谈powershell和cmd。很喜欢BeyondCompare这款工具,从来没有学习过工具的使用,但是拿来就能用,我觉得被它当成一个傻子挺好的。人生苦短,把更多时间腾出来给自己,哪怕是这时间用来发呆我也觉得是值得的。与人方便,于己方便。
能够使用标准库解决的问题,不要使用第三方模块。xml除外(因为我喜欢lxml,官方也指出xml不安全)。
如果仅仅是为了保存为excel可读,那么直接存csv,使用excel读取完全没有任何问题。
import csv def read_csv(): with open('../res/demo.csv', newline="") as csvfile: reader = csv.DictReader(csvfile) for row in reader: print(row) for key, value in row.items(): print(f"{key}:{value}") def write_csv(): with open("../res/demo.csv", mode="w+", newline="") as csvfile: # use DictWriter (easydict) fieldnames = ["iso", "std_mean"] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() iso_data = {"iso": 100, "std_mean": 0.332} writer.writerow(iso_data) try: error_iso_data = {"iso": 999, "std_xxxx": 0.999} writer.writerow(error_iso_data) except ValueError: print("ValueError: dict contains fields not in fieldnames: 'std_xxxx'") # use writer writer = csv.writer(csvfile) iso_data = [[200, 0.356], [300, 0.443], [500, 0.558]] writer.writerows(iso_data) if __name__ == '__main__': write_csv() read_csv()
在写数据这块,有DictWriter和Writer,try中的代码就是会报错的地方,报错信息也就是print中的信息
基本上这两种写入方式足以满足大部分需求了,writerows和writerow相信很容易明白,一个写入多条数据,一个写入单条数据
python csv 模块的官方文档:https://docs.python.org/zh-cn/3/library/csv.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。