在电脑D盘新建一个【76】文件夹。
用VScode编辑器打开【76】文件夹。
在【76】文件夹里新建一个76.py
文件。
大家在76.py
文件里编写代码。
# 导入os 模块,用于创建文件目录
import os
# 导入 csv 模块,用于操作CSV文件
import csv
# mkdir作用是创建目录
# 相对路径
os.mkdir("各班级成绩")
# 用字典存储要写入CSV文件的信息
dict1 = {'姓名': '刘一', '成绩': '100'}
dict2 = {'姓名': '陈二', '成绩': '90'}
# 设置文件的表头,即列名
header = ['姓名', '成绩']
# 文件的相对路径
file_path = r'各班级成绩\1班成绩单.csv'
# 以自动关闭文件的方式创建文件对象
with open(file_path, 'w', encoding='utf-8') as f:
# 实例化类 DictWriter(),得到 DictWriter 对象
dw = csv.DictWriter(f, fieldnames=header)
# 写入文件的表头
dw.writeheader()
# 写入内容,每次写入一行
dw.writerow(dict1)
dw.writerow(dict2)
newline [n’ju:laɪn]:换行。
运行上述代码,我们在【76】文件夹里新建了一个【各班级成绩】文件夹。
在【各班级成绩】文件夹里新建了一个【一班成绩单.csv】文件。
并在【一班成绩单.csv】文件写入了2个字典里的内容。
打开【一班成绩单.csv】文件,我们发现CSV文件行与行之间多了一行空行。
这是因为newline参数
在作妖。
在open或with open语句中,参数 newline
表示用于区分换行符,只对文本模式有效,可以取的值有None
,\n
,\r
。
意思就是在open或with open语句中,如果没有添加newline参数
,那csv文件行与行之间会默认有个空行。
如果你不需要这个空行,那你可以在open或with open语句中添加newline参数
参数 newline
可以取的值有None
,\n
,\r
。
# 导入 csv 模块,用于操作CSV文件
import csv
# 用字典存储要写入CSV文件的信息
dict1 = {'姓名': '刘一', '成绩': '100'}
dict2 = {'姓名': '陈二', '成绩': '90'}
# 设置文件的表头,即列名
header = ['姓名', '成绩']
# 文件的相对路径
file_path = r'各班级成绩\2班成绩单.csv'
# 以自动关闭文件的方式创建文件对象
with open(file_path, 'w', encoding='utf-8', newline="\r") as f:
# 实例化类 DictWriter(),得到 DictWriter 对象
dw = csv.DictWriter(f, fieldnames=header)
# 写入文件的表头
dw.writeheader()
# 写入内容,每次写入一行
dw.writerow(dict1)
dw.writerow(dict2)
运行上面的代码,打开得到的【2班成绩单.csv】文件,如下所示:
此时输出的结果就没有空行。
这是因为我在with open 语句中增加了newline=""
参数。
# 以自动关闭文件的方式创建文件对象
with open(file_path, 'w', encoding='utf-8', newline="") as f:
【温馨提示】
上述两段代码是有区别的。
# 导入os 模块,用于创建文件目录
import os
# mkdir作用是创建目录
# 相对路径
os.mkdir("各班级成绩")
因为【各班级成绩】文件夹已经存在,如果我们在创建该目录,程序会报错。
第一段代码的路径变量:
# 文件的相对路径
file_path = r'各班级成绩\1班成绩单.csv'
第二段代码的路径变量:
# 文件的相对路径
file_path = r'各班级成绩\2班成绩单.csv'
将【1班成绩单.csv】修改成了【2班成绩单.csv】
有newline=""
参数输出的结果没有空行。
没有newline=""
参数输出的结果有空行。