赞
踩
with open() as ...
是对原有 open() 和 close() 的优化。
使用with open() as ...
语句时,代码块运行完毕后,程序会自动关闭文件,不用再写 close()语句来关闭文件。
用法是把open()
函数放在 with 后面,把变量名放在as
后面,结束时要加冒号 :
,然后把要执行的代码缩进到with open() as ...
下方的代码块中。
具体语法你可以参考下图:
在open close 方法中,我们将 open() 返回的文件对象以 变量f = open ( )
的形式赋值给了变量f
。
在 with open( ) as...
中,我们没有使用 变量 =
的形式,而是直接将变量f放在了 as 后面。
with open(file_path, 'w', encoding='utf-8') as f:
用open函数以写入的方式打开文件,将返回的文件对对象赋值给变量f。
csv 全称是 “Comma-Separated Values” 。
中文叫做【逗号分割的值】。
其文件以纯文本的形式存储表格数据。
它比Excel文件更加简洁。
XLS文本是电子表格,包含文本、数值和公式格式等内容,csv则不包含这些。
观察上图可以看到,文件中的数据是纯文本的形式,不同行的值(数据)之间,通过逗号,
进行分隔。
备注:csv 文件也可以通过 Excel 打开,数据以电子表格的样式进行显示。
csv 文件也被视为一种简化版的电子表格。
要对csv 文件进行读写操作,我们需要调用Python中的CSV模块中的类来进行操作。
csv 模块是 Python 标准库中的内置模块,作用是用于处理 csv 文件。
内置模块使用前需要用import 进行导入。
任务1:在根目录下新建一个文件夹,命名为【工作】
新建文件夹,需要用到os 模块。
使用os 模块前需要导入。
使用os 模块的mkdir 函数创建新的文件夹。
# 导入模块
import os
# 模块名.函数名
os.mkdir('工作')
运行上述代码后,发现我们当前操作的文件夹中新增了一个名为【工作】的文件夹。
任务2:在【工作】文件夹中新建1个csv 文件,命名为【学生体检表.csv】
# 声明变量存储文件的路径
file = '工作/学生体检表.csv'
# 用open 函数的w 模式新建一个csv文件
f = open(file, 'w', encoding='utf-8')
# 关闭文件
f.close( )
运行上述代码后,我们发现【工作】文件夹中新增了一个【学生体检表.csv】文件。
任务3:将以下内容写入【学生体检表.csv】文件中
[‘name’,‘height’]
[‘Mike’,‘180’]
[‘Bob’,‘160’]
[‘andy’,‘170’]
# 导入模块 import csv # 新建列表存储要写入的信息 list_1 = ['name','height'] list_2 = ['Mike','180'] list_3 = ['Bob','160'] list_4 = ['andy','170'] # 设置文件路径 file_path = '工作/学生体检表.csv' # 以自动关闭文件的方式写入 with open(file_path, 'w', encoding='utf-8') as f: # 调用模块的类:模块名.类名() csv_writer = csv.writer(f) # 调用类中的方法:对象.方法名() csv_writer.writerow(list_1) csv_writer.writerow(list_2) csv_writer.writerows([list_3,list_4])
【代码解析】
这里首先打开【学生体检表.csv】文件,然后指定打开的模式为w(即写入)。
然后调用csv 模块的writer()类来实现写入。
然后调用writer()类的writerow方法
传入数据,这样就完成了写入。
write[raɪt]:写。
row[rəʊ]:一行。
writerow : 写入一行。
writerows :写入多行。
writerow方法每次仅可以写入一行。
但写入的函数较多时,可以使用writerows()
方法,该方法可以实现一次写入多行。
writerows()方法中的参数可以使用列表嵌套的方式。
运行上述代码后,我们的【学生体检表.csv】有了新的内容,如下图所示:
任务4:将以下内容写入【学生体检表.csv】文件中
dict1 = {‘name’: ‘张三’, ‘height’: ‘176’}
dict2 = {‘name’: ‘李四’, ‘height’: ‘177’}
# 导入 csv 模块 import csv # 新建两个字典 dict1 = {'name': '张三', 'height': '176'} dict2 = {'name': '李四', 'height': '177'} # 新建列表设置文件的表头 head = ['name', 'height'] # 设置文件路径 file_path = '工作/学生体检表.csv' # 以自动关闭的方式写入文件 with open(file_path, 'w', encoding='utf-8') as f: # 调用模块的类:模块名.类名() # 参数 f 为 csv 文件的对象; # 参数 fieldnames 的作用是定义文件的表头 dict_write = csv.DictWriter(f, fieldnames=head) # 写入文件的表头 dict_write.writeheader() # writerows一次性写入多行 dict_write.writerows([dict1,dict2])
【代码解析】
DictWriter() 是csv模块中的一个类。
作用是支持数据以字典的形式写入 csv 文件。
上述代码我们调用了csv 模块的 DictWriter()类来实现字典的写入。
DictWriter 理解为字典的写入:
注意这里有两个大写:一个是D
一个是W
。
dictionary[ˈdɪkʃənri]:字典。
Writer [ˈraɪtə]:执笔者、撰稿人。
fieldnames :字段名称。
字典写入时,会将字典的键与文件中的表头进行匹配。
只有匹配成功,才会将键对应的值写到对应的表头下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。