python内置库csv

csv文件:

  • csv,Comma-Separated Values的缩写,以英文逗号,分隔值
  • 纯文本形式存储数字和文本
  • 文件由任意数目的记录组成
  • 每行记录由多个字段组成

python内置了csv库

列表数据读写

方法 描述
csv.writer(fileobj, dialect='excel', *args, **kwargs) 返回一个writer类,该类提供了写入文件的方法,fileobj为文件流对象
writerow(Iterable) 写入单行数据,Iterable可以是列表、元组、字典等数据,Iterable中的每个元素或键值都会被识别为字符串写入文件中
writerows(Iterable) 一次性写入多行数据,Iterable可以是列表、元组、字典等数据,Iterable中的每个元素都会被识别为一行数据,行数据中也是依照读写器识别数据,数据中的元素或键值会被识别为字符串写入文件中
csv.reader(iterable, dialect='excel', *args, **kwargs) 返回一个reader类,该类提供了读取文件的方法,fileobj为文件流对象

示例;
代码内容为:

import csv

with open("wen.csv", "w", encoding="utf-8", newline='') as f:
    writer = csv.writer(f)
    writer.writerow(["苹果", ["雪梨", "西瓜"], "草莓"])
    writer.writerow(("吃饭", "sleep", "run"))
    writer.writerows([["rows1", "rows2", "row3"], ["数据1", "数据2", "数据3", "数据4", "数据5"]])

with open("wen.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    print(reader)
    for line in reader:
        print(type(line))
        print(line)

代码所在目录生成一个wen.csv文件,文件内容如下:

苹果,"['雪梨', '西瓜']",草莓
吃饭,sleep,run
rows1,rows2,row3
数据1,数据2,数据3,数据4,数据5

控制台输出内容为:

<_csv.reader object at 0x0000022324B3DD20>

['苹果', "['雪梨', '西瓜']", '草莓']

['吃饭', 'sleep', 'run']

['rows1', 'rows2', 'row3']

['数据1', '数据2', '数据3', '数据4', '数据5']

字典读写数据

csv也支持将字典形式的数据进行读写,只是不太灵活。

方法 描述
csv.DictWriter(f, fieldnames, restval="", extrasaction="raise", dialect="excel", *args, **kwds) 以字典形式写数据,第一个的参数f经常用到,表示文件流
csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect="excel", *args, **kwds) 以字典形式读数据,第一个的参数f经常用到,表示文件流
writeheader() DictWriter对象的方法,第一行写列名称

示例:

import csv

with open("wen.csv", "w", encoding="utf-8", newline='') as f:
    head = ["name", "age", "gender"]
    writer = csv.DictWriter(f, fieldnames=head)
    # 写表头
    writer.writeheader()
    # 写一行数据
    writer.writerow({"name": "张三", "age": 24, "gender": "男"})
    # 写多行数据
    writer.writerows([{"name": "李四", "age": 18, "gender": "女"}, {"name": "王五", "age": 32, "gender": "男"}])

with open("wen.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    print(reader)
    for line in reader:
        print(type(line))
        print(line)
        print(f"姓名:{line['name']}, 年龄:{line['age']}, 性别:{line['gender']}\n")

执行后,脚本当前目录生成wen.csv文件,文件内容为:

name,age,gender
张三,24,男
李四,18,女
王五,32,男

控制台输出内容为:



{'name': '张三', 'age': '24', 'gender': '男'}
姓名:张三, 年龄:24, 性别:男


{'name': '李四', 'age': '18', 'gender': '女'}
姓名:李四, 年龄:18, 性别:女


{'name': '王五', 'age': '32', 'gender': '男'}
姓名:王五, 年龄:32, 性别:男

你可能感兴趣的:(python)