先来看一下泡菜(pickle)模块的使用:
一般情况下我们是这样进行文件的 读取操作的:
with open(path, 'w', encoding='utf-8') as f:
f.write('需要写入的内容')
with open(path, 'r', encoding='utf-8') as f:
f.read()
现在我们使用泡菜模块来进行读取操作:
import pickle
with open(path, 'rb')as f:
pickle.load(f)
with open(path,'wb')as f:
pickle.dump(ojb, f)
我们在使用csv模块来对csv后缀名的文件进行读取操作,csv为第三方模块,需要自己下载和安:
L = []
with open(path, 'r', )as f:
a = csv.reader(f) # 返回的是一个可迭代对象
for i in a:
L.append(i)
print(L)
with open(path,'w',newline = '')as f:
b = csv.writer(f) # 获得一个可以写入的csv文件的对象
b.writerrows(L) # 传入一个可迭代对象,并对其进行逐行写入
再来看一下处理表格文件的模块:
有两个:openpyxl和pyexcel_xls
from openpyxl.reader.excel import load_workbook
a = load_workbook(filename='good.xlsx')
print(a)
# 查询文件 中所有的表名
name_list = a.get_sheet_names()
print(name_list)
# 通过表名拿到对应的表的信息
sheet = a.get_sheet_by_name(name_list[1])
#打印表的标题,行和列
print(sheet.title, sheet.max_row, sheet.max_column)
# 打印表中某一位置的信息
c = sheet.cell(row=12, column=4).value
print(c)
sheet_list = []
for row in range(1, sheet.max_row+1):
row_list = []
for column in range(1, sheet.max_column + 1):
# 通过行数和列数我们得到某个表里对应的 元素
b = sheet.cell(row=row, column=column).value
# if b:
# row_list.append(b) # 判断某个信息是不是为空,为空就跳过 但可能会破坏格式
row_list.append(b)
sheet_list.append(row_list)
print(sheet_list)
dict1 = {}
for i in range(len(name_list)):
sheet = a.get_sheet_by_name(name_list[i]) # 通过表名拿到对应的表
sheet_list = []
for row in range(1, sheet.max_row + 1):
row_list = []
for column in range(1, sheet.max_column + 1):
b = sheet.cell(row=row, column=column).value
row_list.append(b)
sheet_list.append(row_list)
# 表的名字作为key,表的信息作为值
dict1[name_list[i]] = sheet_list
print(dict1)
from pyexcel_xls import get_data
from collections import OrderedDict # 有序字典
a = get_data('good.xls') # 从文件中读取所有内容,生成一个有序字典
print(a)
dic = {}
for x in a:
dic[x] = a[x]
print(dic)
反过来我们可以自己写一个excel表来存储信息
from pyexcel_xls import save_data
from collections import OrderedDict
# 解释一下下面的字典结构,标题作为字典的key,每个标题以及
# 下面的具体信息构成一个表格,标题对应的值是一个列表,每个
# 列表中又有小列表,第一个小列表是小标题,后面的列表是具体
# 信息。一共有两个大标题。
dic = {'老师': [['名字', '年龄', '收入'], ['hhl', '18', '100'], ['xlg', '34', '500'], ['方式', '45', '1000']],
'班级': [['学科', '班级号', '教师号', '班级人数'], ['py', 100, 13, 20], ['java', 101, 15, 12], ['bg', 102, 65, 23], ['ios',103, 67, 34]]}
# 生成有序字典
orderdic = OrderedDict()
# 将无序字典增加到有序字典中
orderdic.update(dic)
# 将有序字典保存到某个excel文件中
save_data('end.xls', orderdic)