找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手


xlrd模块可用于读取excel表格数据(不支持写的操作,写的操作需要xlwt模块来实现)
支持xlsx和xls格式文件,不支持csv文件,
csv文件开源python自带的csv模块实现;
import xlrd # 导入xlrd模块
url = r"D:\xiaoliao\python3\DCS13.xls" # 文件存放地址
data = xlrd.open_workbook(url) # 打开表格
# 获取所有sheet 名称
print(data.sheet_names()) # ['dcs1','dcs2']
print(data.sheets()) # 获取所有sheet对象
print(data.sheet_by_name('dcs1')) # 通过名称获取对应的对象
print(data.sheet_by_index(0)) # 通过索引值获取对应的对象
print(data.nsheets) # 获取sheet数量

单元格的操作
import xlrd # 导入xlrd模块
url = r"D:\xiaoliao\python3\DCS13.xls" ' # 文件存放地址
data = xlrd.open_workbook(url) # 打开表格
# 通过对象获取sheet名称
sheet = data.sheets()[0]
print(sheet.name) # dcs1
# 获取行数和列数
print(sheet.nrows) # 有效行数
print(sheet.ncols) # 有效列数
# 获取第一行的所有数据
print(sheet.row_values[0]) # 获取第一行的所有数据
print(sheet.row(0)) # 获取单元格值类型和内容
print(sheet.row_values(0,2,5))
# 0表示行索引值从0开始,2表示开始的列,列也是从0开始,5结束列(不包含)
# 第一个数表示行数,第二个数表示开始列,第三个数表示结束列
print(sheet.row_values(1,1,7))
通过遍历获取表格中指定列或行所有的数据
import xlrd # 导入xlrd模块
url = r"D:\xiaoliao\python3\DCS13.xls"  # 文件存放地址
data = xlrd.open_workbook(url) # 打开表格
sheet = data.sheets()[0]
for i in range(sheet.nrows):
print(sheet.row_values(i))
for j in range(sheet.ncols):
print(sheet.col_values(j)[1],end='')

深拷贝
深浅拷贝就是可变元素的拷贝:
深拷贝就是拷贝出来的新对象和原对象是不一样的但是对象里面的可变元素的地址是一样的
浅拷贝  就是完全和以前没有任何关系,原有对象怎么改变都不会影响对象
import xlrd
url=r"D:\xiaoliao\python3\DCS13.xls"
data=xlrd.open_workbook(url)
print(dataj)
x
#
#
# import copy
# list=[["北京多测师,""成都多测师","上海多测师","深圳多测师"]]
# print(list)
# list2=copy.deepcopy(list)
# print(id(list))#19182088
# print(id(list2))#19189960
# #打印两个子列表的内存地址不一样
# print(list[0])#18985416
# print(list2[0])#18993288
# list2[0][0]="杭州多测师"
# print(list2)
# print(list1)
# #打印修改后的列表,结果list2列表修改了,但不音响list1列表数据

# 浅拷贝 可理解为藕断丝连
import copy
list=[["北京多测师,""成都多测师","上海多测师","深圳多测师"]]
list2=copy.copy(list)
print(id(list))#19116360
print(id(list2))#19117640

#打印两个子列表的内存地址
print(id(list[0]))#15466120
print(id(list2[0]))#15466120
#修改list2列表数据
list2[0][0]="杭州多测师"
print(list2)
print(list)
a=2
print(id(a))
print(type(a))
b=3
print(id(b))
print(type(b))
b=2
print(id(b))
print(type(b))
上述代码可简单理解为2、3是两个人,a、b分别是他们的名字
就算3个这个人的名字给了2这个人,2这个人也是不会变得,这里的变指的是它们的内存中的地址



类:class 用来描述具有相同的属性和方法的对象的集合
可以理解是一个模块,通过它可以创建出无数个具体的实例:
对象:类不能直接使用,通过类创建出实例(又称对象)
这个有点像汽车图纸和汽车的关系 图纸本身(类) 不能被人直接使用,通过图纸创造出汽车(对象)才能使用;
对象和类的关系:就像模具和铸件的关系
类的实例化的结果就是对象,而对象的抽象体就是类
属性:类中的所有变量称为属性
在python中,定义类是通过class关键字
注:class 后面紧接着是类的名称,即dcs,类名称通常大写开头,后面是(object)表示该类从哪个类继承下来的,通常如果没有合适的类,就使用object类,这是所有类最终都会继承的类
class dcs(object):
    pass
类定义名称 不要以纯数字命名 不要以python中的保留字符命名 不要以文件名命名 要简单且见命知意 当类名称有多个单词,应采用驼峰式(单词首字母大写)--Dcs()
定义好dcs类,就可以根据dcs类创建出dcs的实例,创建实例通过类名称()实现
class dcs2():#定义类
    def __init__(self,a,b):#构造函数
        self.a=int(a)#实例变量
        self.b=int(b)
    def add(self):#类方法(只能通过对象来调用)
        return self.a +self.b
    def reduce(self):
        return self.a -self.b
    def ride(self):
        return  self.a*self.b
    def Excrpt(self):
        return  self.a / self.b

p=dcs2('12','4')#实例化创建一个对象
print(p.add())#实例化对象调用类方法
print(p.reduce())#实例化对象调用类方法
print(p.ride())#实例化对象调用类方法

当类中初始化方法或__init__中存在参数时,则实例化,需要往实例化括号中
传入参数;
不存在参数时,则实例化时不需要往实例化括号中传入参数,
而在调用方法时再进行传参;

class dcs2():#定义类
    def add(self,a,b):#类方法(只能通过对象来调用)
        return a +b
    def reduce(self,a,b):
        return a -b
    def ride(self,a,b):
        return  a * b
    def Excrpt(self,a,b):
        return  a / b

p=dcs2()#实例化创建一个对象
print(p.add(2,3))#实例化对象调用类方法
print(p.reduce(5,2))#实例化对象调用类方法
print(p.ride(2,3))#实例化对象调用类方法


class A(object)# 新式类
class c:#经典类
python3当中:默认继承object类,所以它不区分新式类和经典类;
python2当中:没有默认继承的,需要自己继承,所以它是区分心设类和经典类;

a = 300#普通的全局变量
class dcs():#定义类
    a1=200 #类变量(如果方法中要调用它需要加self)
    def __init__(self,name):#构造函数
        self.a2=name#把形参变为实例变量(类的全局变量)
                #实例变量在当前类中,只要是带有self的都可以去使用
    def A1(self):
        print(self.a2)#调用实例化变量
        print(self.a1)#调用类变量
        print(a)#调用普通全局变量
if __name__ == '__main__':
    c=dcs(100)#创建对象
    c.A1()#对象调用方法

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册