76 Python写入csv文件时_newline参数显示空行的解决办法
包含
关于主题
#语法简介
1. 准备工作
2. with open语句没有换行参数
3. with open语句有一个换行参数
4. 总结
1、准备工作:在电脑D盘新建一个文件夹“76”。
[76] 在VScode 编辑器中打开该文件夹。
在[76]文件夹中创建一个新的76.py文件。
大家都在76.py文件中编写代码。
2、with open语句缺少换行参数#Import用于创建文件目录的os模块。
进口商品
#导入csv 模块以处理CSV 文件
导入csv
#mkdir 用于创建目录
#相对路径
os.mkdir(‘每门课的分数’)
#使用字典存储要写入CSV文件的信息
dict1={‘姓名’:’刘毅’,’成绩’:’100′}
dict2={‘姓名’:’陈二’,’成绩’:’90’}
#设置文件头,即列名
header=[‘姓名’,’成就’]
#文件的相对路径
file_path=r’每节课成绩\Class 1 Transcript.csv’
#自动关闭文件并创建文件对象
withopen(file_path,’w’,encoding=’utf-8′)asf:
#实例化DictWriter类并获取DictWriter对象
dw=csv.DictWriter(f,fieldnames=标题)
#写入文件头
dw.writeheader()
#一次一行写入内容
dw.writerow(dict1)
dw.writerow(dict2)
换行符[n’ju:la?n]:换行符。
运行上述代码后,在[76]文件夹内创建了一个新的[Results for every class]文件夹。
已在“每个班级的结果”文件夹中创建了一个名为“Class 1 Transcript.csv”的新文件。
然后,将两个词典的内容写入Class 1 Transcript.csv 文件。
当我打开[Class 1 Transcript.csv] 文件时,我注意到CSV 文件的行之间有多余的空行。
1. 出现空行是因为换行参数导致了问题。
open 或with open 语句使用参数newline 来区分换行符。可能的值为None、\n 和\r。
这意味着如果open或with open语句中没有添加newline参数,则csv文件中的行与行之间默认会有空行。
如果不需要这个空行,可以在open 或with open 语句中添加换行符参数。
参数换行符的可能值为None、\n、\r。
3. with open 语句有一个换行参数#Import csv module 用于处理CSV 文件
导入csv
#使用字典存储要写入CSV文件的信息
dict1={‘姓名’:’刘毅’,’成绩’:’100′}
dict2={‘姓名’:’陈二’,’成绩’:’90’}
#设置文件头,即列名
header=[‘姓名’,’成就’]
#文件的相对路径
file_path=r’每班成绩\2班成绩单.csv’
#自动关闭文件并创建文件对象
withopen(file_path,’w’,encoding=’utf-8′,newline=’\r’)asf:
#实例化DictWriter类并获取DictWriter对象
dw=csv.DictWriter(f,fieldnames=标题)
#写入文件头
dw.writeheader()
#一次一行写入内容
dw.writerow(dict1)
dw.writerow(dict2)
运行上述代码并打开检索到的Class 2 Transcript.csv 文件,如下所示。
2 如果没有空行,则输出结果将没有空行。
这是因为我们在with open 语句中添加了newline=” 参数。
#自动关闭文件并创建文件对象
withopen(file_path,’w’,encoding=’utf-8′,newline=”)asf:
【友情提示】
上面的两段代码是有区别的。
在第二部分代码中,我们删除了与OS相关的语句(删除了以下代码):#Import用于创建文件目录的OS模块
进口商品
#mkdir 用于创建目录
#相对路径
os.mkdir(‘每门课的分数’)
[Results for every class] 文件夹已存在,因此创建此目录将导致错误。
我更改了以下路径变量。代码第一部分中的路径变量:
#文件的相对路径
file_path=r’每节课成绩\Class 1 Transcript.csv’
代码第二部分中的路径变量:
#文件的相对路径
file_path=r’每班成绩\2班成绩单.csv’
将1 类Transcript.csv 更改为2 类Transcript.csv。
4. 使用newline=” 参数总结输出中缺少空行的情况。
如果不指定newline=” 参数,输出将包含空行。