一、文件操作
1.open()函数
open()函数用于打开一个文件,并返回一个file对象(即文件对象)。
使用该函数的语法:open(file,mode,encoding)。
参数file:表示我们要打开的文件路径。
参数mode:决定打开文件的模式,最主要的模式有:只读(r),写(w),追加(a)等。默认值为只读(r)
参数encoding:表示文件的编码方式,一般为“utf-8”。
参数mode并不是强制的,它有个默认值‘r’。也就是说,打开文件时,默认只读模式。
当mode='w',即写模式时,open()函数会打开一个文件只用于写入,如果改文件已存在则打开文件,并从开头开始编辑,即原有内容会被清空。如果该文件不存在,创建新文件。
需要记住的是,当我们要对文件进行读取时,需要使用到mode="r",即只读模式打开文件。当需要对文件进行写入时,需要使用到mode='w'或mode='a'的模式打开文件。
文件路径
文件是通过文件路径定位的,在Python中,路径可以用字符串来表示。文件路径分为绝对路径和相对路径。
绝对路径就是文件或文件夹在硬盘上的完整路径。永远是根目录开头,具体的文件或文件夹名称做结尾。
# Windows 系统中,C 盘根目录中有个名为 【codes】 的文件夹,该文件夹内有 【工作】 文件夹和 【main.py】 文件,【工作】 文件夹中有 csv 文件 【总年级成绩单.csv】。
# 【工作】文件夹的绝对路径
'C:/codes/工作/'
# 【main.py】文件的绝对路径
'C:/codes/main.py'
# 【总年级成绩单.csv】文件的绝对路径
'C:/codes/工作/总年级成绩单.csv'
相对路径是指相对于当前目录的位置。相对路径使用两个特殊符号:点【.】和双点【..】。点【.】表示文件或文件夹所在的当前目录,双点【..】表示当前目录的上一级目录。
# 【工作】 文件夹与 【main.py】 文件都在 【codes】 文件夹中,所以 【工作】 文件夹和 【main.py】 文件的相对路径就可以表示为:
# 【工作】文件夹的相对路径
'./工作/'
# 【main.py】文件的相对路径
'./main.py'
# 【总年级成绩单.csv】文件的绝对路径
'./工作/总年级成绩单.csv'
2.close()函数
close()函数常与open()函数配套使用,用于关闭打开的文件对象。
使用语法:文件对象.close()
# 设置【1班成绩单.csv】文件的路径
file_path = './工作/各班级成绩/1班成绩单.csv'
# 使用 open() 函数打开 【1班成绩单.csv】 文件
source_file = open(file_path, 'r', encoding='utf-8')
# 关闭 source_file 文件对象
source_file.close()
3.with open() as ...
with open()as...是对原有open()和close()的优化。使用with open() as...语句后,在with下面的代码块结束时,会自动执行close()关闭文件。
用法是把open()函数放在with后面,把变量名放在as后面,结束时要加冒号:,然后要把执行的文件处理语句缩进到with open() as ...下方的代码块中。
请务必记住缩进,打开文件之后的其它文件操作,都应该位于with下缩进的代码块中。
二、模块与库
1.模块/库的概念
模块本质上是一个单独的Python文件,一个写好了代码、功能齐全的Python文件就是一个模块。模块中可以包含多个变量、函数、类等。
而具有相关功能模块的集合,就形成了库,库分为标准库和第三方库。
标准库:指Python中内置的模块的集合,不需要安装就可以导入使用。
第三方库:指由第三方发布的库,需要下载安装到本地的Python中,才能够导入使用。
2.模块的使用方式
导入模块
模块的导入语法为:import+模块名。(需要留意的是,语法中import语句与模块名之间有个空格)
import os
直接导入模块内的类或函数:from 模块名 import 类/函数名
。(温馨提示:import 之后的类名或函数名,只需要类或函数的名称,不需要加上()
)
from os import listdir
调用模块内容
如果想要调用模块中的某一个类、函数或变量,其调用语法如下:
1)调用模块下的类:模块名.类名()
;
2)调用模块下的函数:模块名.函数名()
;
3)调用模块下的变量:模块名.变量名
。
import os
file_name = os.listdir('./工作/各班级成绩')
print(file_name)
4.os模块
os模块多用于访问操作系统的功能。模块下的listdir()函数用于返回指定文件夹包含的文件或文件夹的名字的列表。
listdir函数的语法是:os.listdir(path),作用是获取某个文件夹中的所有文件、文件夹名称,需要传入指定文件夹的文件路径。
4.csv模块
csv文件
csv是一种文件格式,是“comma-separated Values(逗号分隔的值)的首字母缩写,其文件以存文本形式存储表格数据”可以通过存文本打开,也可以通过Excel软件打开。
csv文件与Excel文件主要区别在于csv文件只是存文本文件,不包含文字排版格式、单元格样式等信息,所以比Excel文件占用的内存更少,读取速度也更快。
Python自带csv模块,专门用于处理csv文件的读取和写入。
DictReader()类
DictReader()类可以以字典的形式读取csv文件。以csv文件首航标签为键,以每一行的内容作为各个值的形式。
类DictReader()的实例化语法为:DictReader(f),其中参数f 为csv文件的对象。实例化DictReader()后,会得到一个DictReader对象。
# 导入 csv 模块
import csv
# 设置【2班成绩单.csv】文件的路径
file_path = '../工作/各班级成绩/2班成绩单.csv'
# 使用 with open() as ...,以只读模式打开 csv 文件,文件编码为 utf-8
with open(file_path, 'r', encoding='utf-8') as source_path:
# 以字典的形式获取 csv 文件信息
file_dict = csv.DictReader(source_path)
# 打印标签信息
print(file_dict.fieldnames)
# 使用 for 循环遍历 DictReader 对象
for row in file_dict:
# 打印遍历得到字典形式的每一行数据
print(row)
需要注意的是:DictReader 对象无法直接打印显示,需要通过 for 循环遍历每一行信息显示;DictReader 对象.fieldnames
可以获取 csv 文件的标签信息,也是 DictReader 对象的键信息。
dictWriter()类
DictWriter()支持数据以字典的形式写入csv文件。
类DictWriter()实例化语法为:DictWriter(f,fieldnames)。
参数f为csv文件的对象;
参数fieldnames的作用是定义文件的表头,其数据可以为列表形式。
# 导入 csv 模块
import csv
# 新建两个字典
dict1 = {'姓名': '王大帅', '身高': '176'}
dict2 = {'姓名': '许漂亮', '身高': '177'}
# 设置文件的表头
head = ['姓名', '身高']
# 设置总文件路径
file_path = '../工作/学生体检表.csv'
# 以自动关闭的方式打开文件
with open(file_path, 'w', encoding='utf-8') as f:
# 实例化类 DictWriter(),得到 DictWriter 对象
dict_write = csv.DictWriter(f, fieldnames=head)
# 写入文件的表头
dict_write.writeheader()
# 写入文件的多行内容
dict_write.writerows([dict1, dict2])
DictWriter()类的写入流程可以分为:
(1)定义文件表头
(2)以字典的形式定义需要写入的内容
(3)以‘w’模式打开指定路径文件,文件以.csv为后缀名;
(4)实例化DictWriter对象,传入文件表头信息参数,定义表头信息;
(5)通过DictWriter对象.writeheader()方法写入表头信息;
(6)通过DictWriter对象.writerow(dict)或DictWriter对象.writerows(list)方法写入内容。