python 反射机制,excel数据读取

反射机制

# 判断对象 有没有这个属性 hasattr ==》has attribute attribute(属性)
# 字符串对应到 方法 python 反射机制。
has = hasattr(mydict,"keys")
print(has)
has = hasattr(s,"name") # 判断有没有属性
print(has)
has = hasattr(s,"attend_course")
print(has) # 判断有没有这个方法,方法也属于类的属性,只是表现形式不一样

 

 

# 获取对象的属性 getattr 获取对象属性
has = getattr(s,"name") # 如果是对象的属性,则返回具体的值
print(has)
has = getattr(s,"attend_course") # 如果是对象的方法,则返回方法的内存地址
print(has)
has = getattr(s,"attend_course11",None) # 如果获取的这个属性不存在,可以给个默认值,不存在则返回默认值,存在则返回具体的值或者内存
print(has)

 

 

# 添加对象的属性 setattr
# 添加对象的属性,把需要把属性与值传进去,也可以用于添加对象的方法,但目前无需掌握,比较难
# 只针对当前的对象,类的其他对象不受影响
has = setattr(s,"age","18")
print(s.age)

 

# 删除对象的属性 delattr
has = delattr(s,"name") # 删除对象的属性,当前对象的属相就不存在了
print(s.name)

 

 

 

 

 

 

excel数据读取

可用库实现:xlrd  xlwt(主要针对07.xls的版本)   openpyxl(专门针对xlxs后缀的第三方库)   pandas(更强大)

# 安装 openpyxl 库     pip  install  openpyxl

# 引入第三方库
from openpyxl import load_workbook # load_workbook 加载工作簿

# 打开excel,进入工作簿 workbook
wb = load_workbook(r"D:\project\test\python_study\ceshi.xlsx")

获取所有的sheet名       wb.sheetnames

# 选择表单 Sheet
sh = wb["data"]

# 选定单元格 Cell ,读取单元格 行列 从1 开始
print(sh.cell(1,1).value)

# 读写进数据
# sh.cell(4,1).value = "二狗子"

# 保存写入的数据   ----  另存为可以将路径改成其他的/ 路径是打开文件的路径则是保存
# wb.save(r"D:\project\test\python_study\ceshi.xlsx")

# 获取总行号 和总列号
rows = sh.max_row
columns = sh.max_column
print(rows,columns)

# 遍历 行列 ,打印表单内所有数据
for row in range(2,rows+1): # 行号
print("第{}行".format(row))
row_datas = {}
for col in range(1,columns+1): # 列号
v = sh.cell(row,col).value
row_datas[sh.cell(1,col).value] = v
print(row_datas)

 

posted @ 2019-09-01 21:34  yago白菜  阅读(217)  评论(0编辑  收藏  举报