75 CSV文件的写入(保姆级教程)

75. CSV文件的写入(保姆级教程)收录于话题#入门语法1. 目标任务2. 什么是CSV文件2.1 CSV文件知识2.2 准备工作2.3 实操练习12.4 实操练习22.5 实操练习33. os模块

75. 创建CSV 文件(保姆级教程)

包含在主题中

#语法简介

1、目标任务

2.什么是CSV文件?

2.1 CSV文件知识

2.2 准备工作

2.3 实践练习1

2.4 实践练习2

2.5 实践练习3

3. 操作OS模块文件

3.1 准备工作

3.2 OS模块知识回顾

3.3 模块导入语法

3.4 os.getcwd()获取当前工作目录

3.5 os.remove() 删除指定文件

3.6 os.mkdir() 创建新目录

4.写入CSV文件

5. CSV模块知识

6. 语法分析

6.1 导入模块

6.2 创建新字典

6.3 确定标题

6.4 检查文件路径

6.5 创建文件对象

6.6 实例化类并创建对象

6.7 编写内容

7. 代码概述

1. 为目标任务新建一个【班级成就】文件夹。

在此文件夹下创建一个新文件[Class 1 Transcript.csv]。

在此文件中写入以下内容:

年级名称

刘一100

陈二90

2. 什么是CSV 文件? 2.1 关于CSV 文件的知识CSV 文件与TXT 文件相同,都是纯文本文件。

CSV 是“逗号分隔值”的缩写。

逗号[?k?m?]:逗号。

分离[?sep?re?t?d]:分离。

value[?v?lju?z]:值。

逗号分隔值的意思是使用逗号来分隔不同的值。

CSV文件中的数据是纯文本格式,不同行的值(数据)之间用英文逗号分隔。

CSV 文件的第一行对应于Excel 表中的列名称。

CSV 文件可以在记事本或Excel 软件中打开。

【CSV文件与Excel表格的区别】

Excel中的表格功能丰富,样式美观,但占用存储空间大,读写速度慢。

CSV 文件没有样式,读写速度比Excel 表格慢,并且CSV 文件没有最大行数。

在生产中,Python 爬虫项目通常使用CSV 和JSON 文件来存储解析后的网页数据。

今天我们将首先学习如何使用CSV 文件。

接下来,让我们手动创建CSV 文件。

2.2 准备工作在电脑D盘新建文件夹“75”,并在其下进行以下操作。

2.3 实际练习1 创建一个新的txt记事本并将其重命名为Class 1 Transcript.CSV。 1. 创建新的CSV 75 CSV文件的写入(保姆级教程)

右键单击Class 1 Transcript.CSV 文件并选择Excel 作为打开方式。

打开后,在单元格A1 中输入您的姓名,在单元格B1 中输入您的成绩。

2. 输入您的姓名。当您使用Excel 打开CSV 文件时,您会发现CSV 文件实际上是Excel 的简化版本。

关闭保存的文件。

再次右键单击Class 1 Transcript.CSV 文件,然后选择记事本作为打开方式。

我注意到名字和成绩之间有一个逗号。

这是因为CSV 文件中的值是用逗号分隔的。

关闭并保存文件。 2.4 实践练习2 在记事本中打开Class 1 Transcript.CSV 文件。

请按第二行输入刘毅,60

注意这里必须输入两个英文逗号,而不是中文逗号。

3.2 用逗号关闭保存文件。

右键单击Class 1 Transcript.CSV 文件并选择Excel 作为打开方式。

原来刘毅和60之间多了一个空格。

4. 如果CSV文件中有多个英文逗号包含空格,

第一个逗号分隔值。

剩余的逗号表示空单元格。

逗号表示空单元格。

2.5 实战3【Excel】新建表格

点击打开

在单元格A1 中输入姓名,在单元格B1 中输入成绩。

点击【文件】-【另存为】

在[文件格式(T)]中选择[CSV(逗号分隔)]

5. 在[文件类型(T)]中选择[CSV(逗号分隔)],并在[文件名(N)]中输入第2类的成绩单,以创建新的CSV文件。

通过上述练习,您应该了解CSV 文件的手动操作。

了解使用CSV 文件的代码。

3. OS模块文件操作首先,使用OS模块创建所需的文件夹并删除新创建的CSV文件。

3.1 准备工作使用VScode编辑器,打开75文件夹。

在75文件夹中创建一个新的75.py文件。

大家都在75.py文件中编写代码。

3.2 OS模块知识回顾os代表操作系统。

操作[?p?re?n]:操作。

系统[?s?st?m]:系统。

os 模块支持文件和目录操作、进程管理、环境变量管理和其他功能。

调用模块下函数的语法:模块名.函数名():

3.3 模块导入语法os 是内置模块,导入后即可使用。

【语法】

导入+模块名称

导入[?mp?t]:导入。

【例子】

进口商品

3.4 os.getcwd() 获取当前工作目录。 cwd 代表当前工作目录。

当前工作目录是您为其编写代码的文件所在的文件夹。

#导入操作系统模块

进口商品

#getcwd 用于获取当前工作目录。

os.getcwd()

[终端输出]

“d:\\75”

终端输出的“d:\\75”就是当前工作目录,也就是D盘下的75文件夹。

3.5 os.remove() 删除指定文件。 remove[r?mu?v]:删除,废除。

使用os.remove() 删除75 文件夹中创建的两个csv 文件和一个xlsx 文件。

[删除前]

进口商品

#调用模块函数

#模块名称.函数名称

#remove的作用是删除指定的文件。

os.remove(‘1 类成绩单.csv’)

os.remove(‘2 类成绩单.csv’)

os.remove(r’D:\75\新XLSX 工作表.xlsx’)

运行代码时,你会看到VScode编辑器左侧的资源管理器中只有一个75.py文件。

【语法分析】

os.remove(‘1 类成绩单.csv’)

os.remove(‘2 类成绩单.csv’)

这里delete括号里面的参数是你要删除的文件的相对路径。

os.remove(r’D:\75\新XLSX 工作表.xlsx’)

这里delete括号内的参数是要删除的文件的绝对路径。

这里我们会写两条路径来查看路径的关联知识点。其实大家可以根据自己的需求来选择。

路径前面的r表示路径转义。添加此r 就无需考虑路径参数中的转义字符。

【如何在VScode中查看路径】

单击VScode 左上角的资源管理器

右键单击Class 1 Transcript.csv

选择复制路径或复制相对路径并粘贴以快速获取文件的路径。

7. 复制路径3.6 os.mkdir() 创建一个新目录。 mkdir是make directory的缩写,翻译过来就是创建目录。

mkdir 的功能相当于创建一个新文件夹。

【目标任务】

在当前文件夹下使用相对路径创建一个新的[Results by class] 文件夹。

在当前文件夹下创建一个新的[成员表]文件夹,并使用绝对路径。

进口商品

#调用模块函数

#模块名称.函数名称

#mkdir 用于创建目录

#相对路径

os.mkdir(‘每门课的分数’)

#绝对路径

os.mkdir(r’D:\75\成员表’)

运行上面的代码后,你会发现左边的资源管理器里多了两个文件夹。

一个是“每堂课的成绩”文件夹。

os.mkdir(‘每门课的分数’)

mkdir 的参数是文件夹名称。这意味着在当前文件夹下创建一个目录。

os.mkdir(r’D:\75\成员表’)

mkdir 参数是绝对路径。也就是说,在D盘正下方的75文件夹下创建一个名为【成员表】的目录。

4. 写入CSV文件【试用代码】

#导入csv模块

导入csv

#使用字典存储要写入CSV文件的信息

dict1={‘姓名’:’刘毅’,’成绩’:’100′}

dict2={‘姓名’:’陈二’,’成绩’:’90’}

#设置文件头,即列名

header=[‘姓名’,’成就’]

#文件的相对路径

file_path=r’每节课成绩\Class 1 Transcript.csv’

#自动关闭文件并创建文件对象

withopen(file_path,’w’,encoding=’utf-8′,newline=”)asf:

#实例化DictWriter类并获取DictWriter对象

dw=csv.DictWriter(f,fieldnames=标题)

#写入文件头

dw.writeheader()

#一次一行写入内容

dw.writerow(dict1)

dw.writerow(dict2)

[终端显示]

8. 执行结果运行上述代码时,会在[各班级成绩]文件夹下创建一个新的[班级1成绩单.csv]文件。

并且字典的内容已成功写入CSV文件。

字典的键名和结果成为CSV 文件的列名。

字典值100和90是CSV文件中每一列对应的值。

只需10 行代码即可创建文件并写入值。

我们来分解一下这10 行代码。

5.关于CSV模块的知识csv模块是Python中的内置模块,不需要安装,可以直接导入使用。

[导入语法]

导入csv

在第71 《库与模块》 节中,我们了解到.py 文件是模块。

我们还在第73 节《python第三方库安装教程》 中解释过,当您安装Python 时,会在您的计算机上创建一个文件夹来存储模块源代码。

下面是我电脑上csv.py的保存路径。

C:\Users\XXXX\AppData\Local\Programs\Python\Python39\Lib

【部分CSV模块源码】

类DictReader:

def__init__(self,f,fieldnames=none,restkey=none,restval=none,

方言=’excel’,*args,**kwds):

self._fieldnames=字段名称键列表#dict

self.restkey=restkey#keytocatchlongrows

self.restval=restval#短行的默认值

self.reader=reader(f,方言,*args,**kwds)

self.dialect=方言

self.line_num=0

def__iter__(自我):

还给你自己

@财产

deffieldnames(自己):

ifself._fieldnamesisNone:

尝试:

self._fieldnames=下一个(self.reader)

除了StopIteration:

通过

self.line_num=self.reader.line_num

returnself._fieldnames

@fieldnames.setter

deffieldnames(自我,值):

self._fieldnames=值

def__next__(self):

ifself.line_num==0:

#仅用于其副作用。

自我字段名

行=下一个(self.reader)

self.line_num=self.reader.line_num

与#basicreader不同,建议不要返回空格。

#因为我们通常都会遇到无足轻重的瘾君子

价值

whilerow==[]:

行=下一个(self.reader)

d=dict(zip(self.fieldnames,行))

lf=len(self.字段名)

lr=长度(行)

ifflr:

d[self.restkey]=行[lf:]

埃利弗里尔:

forkeyinself.fieldnames[lr:]:

d[key]=self.restval

回来

类DictWriter:

def__init__(self,f,字段名,restval=”,extrasaction=’raise’,

方言=’excel’,*args,**kwds):

self.fieldnames=fieldnames#dict 中的键列表

self.restval=restval#forwritingshortdicts

ifextrasaction.lower()notin(‘raise’,’ignore’):

raiseValueError(‘extrasaction(%s) 必须是’引发’或’忽略”’

%额外动作)

self.extrasaction=额外动作

self.writer=writer(f,方言,*args,**kwds)

defwriteheader(自身):

header=dict(zip(self.fieldnames,self.fieldnames))

returnself.writerow(标题)

def_dict_to_list(自我,rowdict):

ifself.extrasaction==’raise’:

lower_fields=rowdict.keys()-self.fieldnames

ifwrong_fields:

raiseValueError(‘字段包含字段名称: 以外的字段’

+’,’.join([repr(x)forxinwrong_fields]))

return(rowdict.get(key,self.restval)forkeyinself.fieldnames)

defwriterrow(自我,rowdict):

returnself.writer.writerow(self._dict_to_list(rowdict))

defbirows(self, rowdicts):

returnself.writer.writerrows(map(self._dict_to_list,rowdicts))

上面的代码是我从Python的csv.py模块的源代码中复制的部分代码。

这里展示源代码的目的是:

首先是为了让大家更好的理解什么是模块。

其次,我们想让CSV 模块的类和方法对每个人来说都更加直观。

一旦你理解了代码是什么以及为什么,就不再需要记住代码了。

[CSV 类]

类DictReader:

类DictWriter:

首字母大写D 的class 关键字正确地将它们标识为两个类名。

字典[?d?k?nri]:字典。

领导者[?ri?d?]:领导者。

作家[?ra?t?]:作家。

DictReader:以字典格式阅读。

DictWriter:以字典格式编写。

正如它们的名称所示,这两个类的功能是读取和写入。

[CSV 函数]

defwriteheader(自身):

defwriterrow(自我,rowdict):

defbirows(self, rowdicts):

以def 开头的函数是自定义函数。

类中定义的函数称为方法。

上面三行代码就是DictWriter类中定义的三个方法。

标头[?hed?(r)]:标头。

行[r?]:行。

writeheader:写入表头(这里的表头是指表的表头,即列名)。

writerow:写入一行。

writerows:写入多行。

以上信息是我个人的理解,仅供参考。

[调用模块或库中的类、函数或变量]

调用模块或库中的类: modulename.classname() (例如csv.DictReader())

调用模块或库中的函数: modulename() (例如csv.writerow)。

6.语法分析6.1 导入模块#导入csv模块

导入csv

处理CSV 文件需要csv 模块。

6.2 创建新字典#使用字典来存储要写入CSV文件的信息

dict1={‘姓名’:’刘毅’,’成绩’:’100′}

dict2={‘姓名’:’陈二’,’成绩’:’90’}

字典是一种数据类型。

字典用英语大括号{}表示。

字典键和值由英文冒号:分隔。

键值对以逗号分隔。

字典的键是文件列名,即标题的含义。

这里的关键是姓名和年级。

字典值是每一列对应的值。

名字对应的数值是刘毅和陈二。

等级对应的值为100和90。

作者:Andy的Python学习笔记

xyz77520520

6.3 确定表头#设置文件头,即列名

header=[‘姓名’,’成就’]

标头[?hed?(r)]:标头。

header 是存储列表的变量名。

列表中的元素是将要写入的标题。

10. Header 注意,这个header 是字典的关键。

表头和字典键之间必须一一对应。否则,程序将无法找到要写入的值。

6.4 检查文件路径并确定文件名为“Class 1 Transcript.csv”。

由于我们要写入csv 文件,因此文件扩展名为.csv。

1 级成绩单是我给文件起的名称。

[75]我想在文件夹内的【Results for every class】文件夹中新建一个文件,文件路径写入如下。

[相对路径]

#文件的相对路径

file_path=r’每节课成绩\Class 1 Transcript.csv’

如果编辑器无法打开[75]文件,则相对路径不在上面。

[绝对路径]

#设置文件路径

file_path=r’D:\75\每班成绩\1班成绩单.csv’

字母r 充当路径转义符。使用r,您不必考虑路径参数中的转义字符。

6.5 创建文件对象在日常工作中,您需要向文件写入内容。在写入之前,必须先创建文件。

Python 也是如此。如果我想写点什么,我应该写在哪里?首先我们需要一个对象,对吗?

所以你需要创建一个文件对象。

这意味着Python中的一切都是对象。

正如您在第69 节《open函数—打开文件并返回文件对象》 和第70 节《with open( ) as 以自动关闭文件的方式打开文件》 中了解到的,您可以使用open 和with open 语句创建文件对象。

#自动关闭文件并创建文件对象

withopen(file_path,’w’,encoding=’utf-8′,newline=”)asf:

file_path=r’每班2\1班成绩单.csv’

#自动关闭文件并创建文件对象

withopen(file_path,’w’,encoding=’utf-8′,newline=”)asf:

#实例化DictWriter类并获取DictWriter对象

dw=csv.DictWriter(f,fieldnames=标题)

#写入文件头

dw.writeheader()

#一次一行写入内容

dw.writerow(dict1)

dw.writerow(dict2)

[状态]

这一段计划了很久,总共花了近7个小时,虽然看上去工程量并不大。

如果您觉得这篇文章对您有帮助,请点击阅读或分享给其他朋友。

你的分享激励我继续创作。谢谢您的喜欢!

该文章由不明人士转载,因此我们将作者添加到该文章中。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
游戏资讯

77 python writerows写入多行

2024-5-10 15:16:45

游戏资讯

76 Python写入csv文件时出现空行_newline参数解决

2024-5-10 15:20:23

个人中心
购物车
优惠劵
有新私信 私信列表
搜索