目录
- 文本文件
- Excel文件
- CSV文件
正文
文本文件
- Python程序一般通过内置的open()函数打开一个txt文本文件创建一个file对象,open()函数常用的参数有文件名、文件的打开方式和编码方式,语法如下:
f=open(filename,mode,encoding)
其中f表示打开文件对象;filename表示文件名;mode表示文件的访问模式,常见的访问模式有"r"、“w”、“a”,"r"表示只读模式,"w"表示写入模式,"a"表示追加模式;encoding表示文本文件的编码方式,其默认编码方式是ASCII编码,ASCII编码是无法处理中文字符的,如果需要处理中文字符转换为utf-8编码。 - Python提供了多种方法用于文本文件的读写操作,常用的方法是调用read()和write()函数读取和写入文本文件。write()函数可以将一个字符串写入到文件中,常见用法为:
f.write(string)
其中f表示打开文本对象,string表示写入的字符串,常见用法为:
f.read([count])
其中f表示打开文件对象,count表示要从已打开文件中读取的字节计数。
read()函数从文件的开头开始读入,如果没有传入参数count,会尽可能多地读取更多的内容。
文件打开完成读写操作后需要关闭文件,使用close()函数可以关闭文件,常见用法如下:
f.close() - 【例】将字符串"computer"写入course.txt文件中,并将course.txt文件保存在d盘books文件夹下。
- 【分析】将字符串写入文件,文件保存在d盘books文件夹下,因此在用open()函数打开文件时,filename参数需要带上路径,filename=‘d:\books\course.txt’,访问模式为"W"。
- 【代码如下】
filename='d:\\books\\course.txt'
f=open(filename,'w')
f.write('computer')
f.close()
- 【运行结果】
- 【例】打开course.txt文件,读取全部内容。
- 【分析】读取文本文件的内容,访问模式要写"r"
- 【代码如下】
f=open('d:\\books\\course.txt','r')
string=f.read()
f.close()
print(string)
- 【运行结果】
Excel文件
- Python为Excel文件的操作提供许多模块的支持,openpyxl模块专门处理Excel2007及以上版本产生的xlsx文件,可以对xlsx文件实现读写操作。
- 在程序中通过import openpyxl语句引入此模块,调用openpyxl.Workbook()取得工作簿Workbook对象,语句如下:workbook=openpyxl.Workbook()
将数据写入单元格,有两种方法,第一种方式是使用索引或工作表的cell()方法,通过指定单元格行列的方式将数据写入工作表,语句如下:
worksheet.cell(row=row_num,column=col_num).value=data
第二种方式是使用append()函数通过指定单元格行的方式将数据写入工作表,默认情况下从第1行开始存入,语句如下:
worksheet.append(data)
将数据写入到工作表后,可以使用workbook.save()函数将创建的工作簿保留下来,语句如下:workbook.save(file_name)
安装pip install openpyxl - 【例】将某大学2019年某地区部分专业招生计划数据,其中俄语8人、应用物理学10人、信息与计算科学12人、数学与应用数学10人、智能科学与技术18人,物联网工程12人、软件工程22人、计算机科学与技术14人、写入Enrollmentplan.xlsx工作簿中,表名为2019部分专业计划招生人数。
- 【分析】招生计划包括专业、计划人数两项可以用列表表示,数据加上表头一共有九行,需要九个列表,将这九个列表合成嵌套的列表。程序调用openpyxl.Workbook()函数创建工作簿,调用openpyxl.Workbook().active获取工作表,利用嵌套循环将列表中的数据写入Cell对象。
- 【代码如下】
import openpyxl
data=[['专业','计划人数'],['俄语','8'],['应用物理学','10'],['信息与计算科学','12'],['数学与应用数学','10'],['智能科学与技术','18'],['物联网工程','12'],['软件工程','22'],['计算机科学与技术','14']] #将招生计划数据存入列表data中
wb=openpyxl.Workbook() #创建工作簿对象wb
ws=wb.active #获取活跃的工作表ws
ws.title='2019部分专业计划招生人数' #工作表ws的名字改为'2019部分专业计划招生人数'
r=1 #表的行号r从1开始
for line in data:
for col in range(1,len(line)+1): #变量col取值从1到列表line的长度
ws.cell(row=r,column=col).value=line[col-1] #将line列表中的值存入
r+=1 #行号r加1,指向下一行
wb.save('Enrollmentplan.xlsx') #保存工作簿,起名为Enrollmentplan.xlsx
-
【运行结果】
-
【例】将字典中的数据{‘北京市’:‘北京’,‘黑龙江省’:‘哈尔滨’,‘青海省’:‘西宁’,‘山东省’:‘济南’,‘湖北省’:‘武汉’,‘江苏省’:‘南京’,‘新疆’:‘乌鲁木齐’,‘四川省’:‘成都’}存入ProvincialCapital.xlsx文件。
-
【分析】获取的数据以字典的形式存在,可以先将字典里面的数据存入列表,再写入Excel文件中。利用append()函数将字典中的每对数据(键,值)以列表[键,值]形式传入列表中,形成一个嵌套的列表,再利用append()函数将列表内的内容存入工作表。
-
【代码如下】
import openpyxl #引入相关库
wb=openpyxl.Workbook() #创建工作簿对象wb
ws=wb.active #获取活跃的工作表ws
#对ws的单个单元格传入数据
ws['A1']='省份'
ws['B1']='省会'
data={'北京市':'北京','黑龙江省':'哈尔滨','青海省':'西宁','山东省':'济南','湖北省':'武汉','江苏省':'南京','新疆':'乌鲁木齐','四川省':'成都'} #将数据存入字典data
data_excel=[] #创建空列表data_excel
for each in data: #变量each取值字典data中的每个键值对
data_excel.append([each,data[each]]) #将变量each的值转换成列表[each,data[each]]追加到列表data_excel中
for each in data_excel: #读取列表data_excel中的每个值存入列表each
ws.append(each) #将列表each的内容从第1行开始依次存入工作表
wb.save('ProvincialCapital.xlsx') #保存工作簿,起名ProvincialCapital.xlsx
- 【运行结果】
- 【例】输出ProvincialCapital.xlsx文件中的数据。
- 【分析】ProvincialCapital.xlsx文件中的数据可以以列表的形式输出,也可以以字典形式输出。
- 【代码如下】(以列表形式输出)
import openpyxl
workbook=openpyxl.load_workbook('ProvincialCapital.xlsx')
worksheet=workbook.worksheets[0]
rows=worksheet.max_row
cols=worksheet.max_column
s=[] #定义空列表,用于保存工作表所有数据
j=2 #变量表示工作表的行,从第2行开始取值,s取值2
for x in range(rows-1):
t=[] #定义空列表t,用于保存工作表当前行的数据
for i in range(1,cols+1): #变量i的取值从1到工作表的列数
#将行j列i单元格的值存入变量value
value=worksheet.cell(row=j,column=i).value
t.append(value) #将value的值追加到列表t
s.append(t) #将列表t的值追加到列表s
j+=1 #变量j加1,指向下一行
print(s) #输出列表s
- 【运行结果】
- 【代码如下】(以字典形式输出)
import openpyxl
workbook=openpyxl.load_workbook('ProvincialCapital.xlsx')
worksheet=workbook.worksheets[0]
rows=worksheet.max_row
cols=worksheet.max_column
s=[] #定义空列表s,用于保存工作表所有的数据
j=2 #变量表示工作表的行,从第2行开始取值,s取值2
for x in range(rows-1): #变量x的取值从0到工作表的行数-2
t={} #定义空字典t,用于保存工作表当前行的数据
for i in range(1,cols+1): #变量i的取值从1到工作表的列数
value=worksheet.cell(row=j,column=i).value
#取到第一行每列的key值
dict_value=worksheet.cell(row=1,column=i).value
t[dict_value]=value #将当前行的数据以键值对的形式存入字典t
s.append(t) #将列表t的值追加到列表s
j+=1 #变量j加1,指向下一行
print(s) #输出列表s
- 【运行结果】
CSV文件
- CSV是Comma_Separated Values的简写,中文称为逗号分隔值,有时也称为字符分隔值,因为分隔字符可以不是逗号。CSV文件以纯文本形式存储表格数据(数字和文本),文件由任意数目的记录组成,记录间以换行符分隔,每条记录由字段组成,字段间的分隔符是字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
- CSV文件最常见的应用是在不同程序之间转移表格数据,因为绝大多数程序语言都支持CSV文件。CSV文件可以用记事本或excel打开,两者打开的区别在于记事本打开显示分隔符,用excel打开不显示分隔符。
- Python语言提供了CSV模块对CSV文件进行操作。在对CSV文件进行操作时,首先利用import csv语句导入csv模块,然后利用with open() as语句打开文件,with open() as 语句常见的用法如下:
with open(csvfile,mode,encoding,newline=None) as fp
CSV文件打开后,**csv.writer()**函数创建初始化写入对象,用法如下:
writer(fp,dialect=‘excel’,**fmtparams)
csv.writer().writerow()、csv.writer().writerows()函数将数据写入到CSV文件中,csv.writer.writerow()函数将数据单行写入CSV文件,而csv.writer().writerows()函数将多行数据一块写入CSV文件。 - 【例】将学生信息,如表所示,写入score.csv文件。
学号 | 姓名 | 大学计算机成绩 | 程序设计成绩 |
---|---|---|---|
10001 | 张三 | 95 | 93 |
10002 | 李四 | 87 | 90 |
10003 | 王五 | 71 | 80 |
- 【分析】学生信息包括学号、姓名、大学计算机成绩、程序设计成绩四项,可以用列表表示,加上表头一共四行,需要4个列表。程序可以利用with open() as函数创建score.csv文件,利用csv.writer函数创建初始化写入对象,利用csv.writer().writerow()函数将每个列表数据写入score.csv文件,也可以先利用csv.writer().writerow()函数将表头信息写入score.csv文件,再利用csv.writer().writerow()函数将三行学生信息一块写入score.csv文件。
- 【代码如下】
import csv #引入相关的库
with open('score.csv','w',newline='') as fp: #以"只写"的形式打开文件,如果文件不存在新建并打开
writer=csv.writer(fp) #创建文件写入对象writer
writer.writerow(['学号','姓名','大学计算机成绩','程序设计成绩']) #将列表内容写入文件
writer.writerow(['10001','张三','95','93']) #将列表内容写入文件
writer.writerow(['10002','李四','87','90']) #将列表内容写入文件
writer.writerow(['10003','王五','71','80']) #将列表内容写入文件
- 【运行结果】
- 用excel打开
- 用excel打开
- 用记事本打开
- 【例】利用csv模块中的csv.reader函数读取文件score.csv中的数据。
代码如下:
import csv #引入相关的库
with open('score.csv','r') as fp: #以"只读"的形式存入row
reader=csv.reader(fp) #创建csv文件操作对象reader
for row in reader: #将文件每行的内容以列表的形式存入row
print(row) #输出row
- 【运行结果】
知识点整理不易,如果对你有帮助,给个免费的赞支持一下吧!