python常用数据文件操作(Excel、csv文件)
一、Excel文件操作(xlrd、xlwt模块)
-
Excel中的三大对象
- WorkBook:工作簿对象
- Sheet:表单对象
- Cell:表格对象
其中工作簿对象代表整个Excel文件,表单对象代表Excel文件中的每一页sheet,cell对象代表每一个数据格。
-
xlrd库的open_wordbook()方法用来打开一个Excel文件
workboot = xlrd.open_workbook("Excel文件测试用.xlsx")
-
工作簿对象的sheet_names()方法用来获取工作簿的所有sheet页的名字
sheetNames = workboot.sheet_names()
输出:
['学科', '学生']
-
可以通过sheet的索引号(即页号)获取sheet页面(注意索引号从0开始),或通过sheet的名字获取该sheet
sheet1 = workboot.sheet_by_index(1) sheet11 = workboot.sheet_by_name("学生")
-
sheet对象的nrows方法获取总行数,ncols获取总列数
rows = sheet1.nrows clo = sheet1.ncols
输出:
行数:5 列数:4
-
cell(rowx, colx):获取sheet对象中第rowx行,第colx列的单元对象,返回值的格式为“单元类型:单元值”
data = sheet1.cell(2, 1)
输出:
text:'数科'
-
cell_value(rowx, colx):获取sheet对象中第rowx行,第colx列的单元数据,返回值为当前值
data = sheet1.cell_value(2, 1)
输出:
数科
-
row_slice(rowx, start_colx, end_colx):以切片方式获取sheet中第rowx行从start_colx列到end_colx列的单元,返回值为列表;
data = sheet1.row_slice(0, 1, 3)
输出:
[text:'班级', text:'年龄']
-
col_values(colx, start_rowx, end_rowx): 获取sheet中第colx列从start_rowx行到end_rowx行的数据,返回值为列表。
row_data = sheet1.col_values(0, 1, 4)
输出:
['小明', '小红', '李华']
-
col_slice(colx, start_rowx, end_rowx): 以切片方式获取sheet中第colx列从start_rowx行到end_rowx行的数据,返回值为列表。
row_data = sheet1.col_slice(0, 1, 4)
输出:
[text:'小明', text:'小红', text:'李华']
2.2 xlwt模块(对后缀为.xls文件进行操作)
-
创建一个工作簿
xl = xlwt.Workbook(encoding='utf-8')
-
创建一个sheet对象,第二个参数是指单元格是否允许重设置,默认为False
sheet = xl.add_sheet('信息', cell_overwrite_ok=False)
-
设定样式
# 初始化样式 style = xlwt.XFStyle() # 为样式创建字体 font = xlwt.Font() font.name = 'Times New Roman' # 黑体 font.bold = True # 下划线 font.underline = False # 斜体字 font.italic = True # 设定样式 style.font = font
-
往sheet页中写入数据
# 第一个参数代表行,第二个参数是列,第三个参数是内容,第四个参数是格式 sheet.write(0, 0, '姓名') sheet.write(0, 1, '性别', style)
-
可以通过循环将列表的数据写入sheet页中
names = ["张三", "李四", "王五", "小红", "李华"] sexs = ["男", "男", "男", "女", "男"] # 数据行号 for i in range(len(names)): sheet.write(line, 0, names[i]) sheet.write(line, 1, sexs[i]) line+=1
-
保存文件
xl.save('Excel文件测试用2.xls')
结果:
二、csv文件文件操作
open 打开文件有多种模式,下面是常见的4种
r:读数据,默认模式
w:写数据,如果已有数据则会先清空
a:向文件末尾追加数据
x : 写数据,如果文件已存在则失败
第2至4种模式如果第一个参数指定的文件不存在,则会先创建一个空文件
2.1 写文件方法一(正常写入)
with open('csvFileTest2.csv', 'w', newline='') as f:
head = ['姓名', '分数']
rows = [
['张三', 80],
['李四', 90]
]
# 定义一个变量对文件进行写入
writer = csv.writer(f)
# 写入一行数据
writer.writerow(head)
# 写入多行数据
writer.writerows(rows)
2.2 写文件方法二(写入字典类型数据)
with open('csvFileTest2.csv', 'w', newline='') as f:
head = ['姓名', '分数']
rows = [
{'姓名': '张三', '分数': 80},
{'姓名': '李四', '分数': 90}
]
# 以字典形式写入数据
writer = csv.DictWriter(f, head)
writer.writeheader()
writer.writerows(rows)
2.3 csv文件读
with open('csvFileTest2.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)