csv文件:
,
分隔值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, 性别:男