- 标识符,变量名、函数名、类名的统称
- 命名规范
- 只能包含字母、数字、下划线,并且不能以数字开头
- 不能与系统关键字、模块名相同
- 严格区分大小写
- 尽量使用有意义的英文单词
- 多个单词之间使用下划线连接
- student_age = 20
- 命名规范
- 变量
- 声明:取个名字,给一个值,通常在运算符两边夹空格,提高代码可读性
- age = 20
- 声明:取个名字,给一个值,通常在运算符两边夹空格,提高代码可读性
- 输入输出
- 输入:input([‘message’])
- 接收外部输入,无论外部输入哪种数据类型的值,都统一作为字符串处理
- 代码遇到input函数会暂停,直到敲入回车键后代码继续运行
- message为可选的参数,一般用于输入的提示
- 在控制台输入时,需要夹引号,不然会报语法错误
- 输出:print(value1,value2,……,sep=’ ‘,end=’n’,file=sys.stdout)
- value1,表示要输出的内容,可以同时输出多个对象,中间使用逗号隔开
- sep,seperate,在结果中多个对象值的分隔符,默认为空格
- end,表示输出完成后的结束符,默认为换行符(n)
- file,将内容输出到指定文件
- 输入:input([‘message’])
- 数据类型
- type(obj),返回对象的类型
- 布尔型:bool
- 只有两个值:True、False,声明后不能被改变
- bool(obj),根据对象的值返回布尔值
- 0、None、空字符、空列表、空字典,是返回False
- 整型:int
- 声明后不能被改变
- 浮点型:float
- 声明后不能被改变
- 字符串:str,包含在引号之间的内容(可以是单引号、双引号、三引号)
- 声明后不能被改变
- 单引号、双引号不能跨行写,非得跨行的话,就输入一个转义字符
- tips:如果三引号单独站一排,表示注释;如果三引号在等号右边,表示字符串
- 元组:tuple
- 声明后不能被改变
- 包含在()之间的内容,每一个元素之间使用逗号分隔,元组中的元素可以是任意数据类型
- 声明:tup = (1,2,3,4)
- 列表:
- list,包含在[]之间的内容,每一个元素之间使用逗号分隔,列表中的元素可以是任意数据类型
- 声明:li = [1,2,1.2,’abcd’,True,[1,2,3]]
- list,包含在[]之间的内容,每一个元素之间使用逗号分隔,列表中的元素可以是任意数据类型
- 字典:
- dict,包含在{}之间的内容,每一个元素为一个键值对(key:value),键只能为不可变的数据类型(int、float、布尔型、字符串、元组),值可以为任意数据类型
- 声明:dic = {‘name’:’lucy’,1:[1,2,3],1.8:{},True:’abc'(1,2):1000}
- dict,包含在{}之间的内容,每一个元素为一个键值对(key:value),键只能为不可变的数据类型(int、float、布尔型、字符串、元组),值可以为任意数据类型
- 集合(了解):
- set,包括在{}之间的内容,每一个元素之间使用逗号分隔,集合中的元素可以是任意数据类型
- 集合中的元素不会重复,常用集合来去重
- 例:
- 数据类型
- 数据类型转换
- bool(obj),根据对象的值返回布尔值
- 0、None、空字符、空列表、空字典,返回False
- int(obj),将对象转换为整型
- 布尔型–>整型
- True —–> 1
- False —- > 0
- 浮点型—->整型
- 做截取(取整),会损失精度
- 字符串 ——> 整型
- 字符串中不能包含任何非数字字符
- 布尔型–>整型
- float(obj),将对象转换为浮点型
- 布尔型—–>浮点型
- True —– > 1.0
- False —–> 0.0
- 整型 —— > 浮点型
- 字符串 —-> 浮点型
- 字符串中不能包含小数点以外的任何非数字字符
- 布尔型—–>浮点型
- str(obj),将对象转换为字符串
- 例:
- 字符串、整型、浮点型、布尔型相互转换
- tuple(obj),将对象转换为元组
- 字符串—-> 元组
- 列表—-> 元组
- 字典—-> 元组
- 元组中只有键
- 集合不能转元组
- list(obj),将对象转换为列表
- 字符串 —-> 列表
- 元组 —-> 列表
- 集合 —-> 列表
- 字典 —-> 列表
- 列表中只有键
- bool(obj),根据对象的值返回布尔值
- 格式化
- 第一种方式:占位符
- 语法:%[-w.p]type
- -,表示左对齐,默认是右对齐
- w,宽度
- p,表示精度
- type,表示数据类型(d-整数,f-浮点数,s-字符串)
- 例1:
- %5.2f,表示一个浮点数,宽度为5,精确到小数点后第2位
- %-5s,表示一个字符串,宽度为5,左对齐
- 例2:
- 输入一个用户的姓名,手机号,按格式输出用户信息:姓名–xxxx;手机号—xxxxxxxx
- 输入一个用户的姓名,手机号,按格式输出用户信息:姓名–xxxx;手机号—xxxxxxxx
- 例3:
- 输入学生的姓名、成绩,按以下格式输出每个学生的成绩信息、平均成绩(保留2位小数)
- 输入学生的姓名、成绩,按以下格式输出每个学生的成绩信息、平均成绩(保留2位小数)
- 语法:%[-w.p]type
- 第二种方式:format
- 语法:'{[:w.pf]}’.format(var)
- w,宽度
- pf,表示浮点数的精度
- 无-,默认左对齐
- 例:
- 语法:'{[:w.pf]}’.format(var)
- 第三种方式:f-string
- 语法:f'{var[:w.pf]}’
- pf,表示浮点数的精度
- w,宽度
f'{name_1:7}t{score_1}n{name_2:7}t{score_2}n平均成绩t{avg_score:.2f}'
- 例:
- 语法:f'{var[:w.pf]}’
- 第一种方式:占位符
- 运算符
- 算术运算符
- +,加法,返回两个对象的和,3+4 = 7
- 如果运算的两个对象为字符串,则做字符串的拼接,如’abc’+’efg’ = ‘abcdefg’
- -,减法,返回两个对象的差,3-4 = -1
- *,乘法,返回两个对象乘积,3*4 = 12
- 如果运算的对象为1个字符串,1个数字,则复制该字符串n次,如’a’*5 = ‘aaaaa’
- /,除法,返回两个对象的商,5/2 = 2.5
- //,整除,返回小于等于两个对象的商的最大整数
- 5//2 = 2
- 5//-2 = -3
- **,幂运算
- 3**2 = 9
- 3**-2 = 1/9 = 0.111111
- %,求余,返回两个对象相除的余数
- 公式:r = a%b = a-b*(a//b)
- 例:
- +,加法,返回两个对象的和,3+4 = 7
- 赋值运算符
- =,普通赋值运算符,a = 1
- +=,如a += b相当于a = a+b
- -=,如a -= b相当于a = a-b
- *=,如a *= b相当于a = a*b
- /=,如a /= b相当于a = a/b
- //=,如a //= b相当于a = a//b
- **=,如a **= b相当于a = a**b
- %=,如a %= b相当于a = a%b
- 例:
- 比较运算符
- 运算结果为布尔值:True、False
- ==,比较两个对象的值是否相等
- >
- >=
- !=
- 逻辑运算符
- 运算对象为布尔表达式,运算结果为布尔值
- and,参与运算的对象结果都为True,则整体表达式结果为True,否则为False
- or,参与运算的对象只要有任意一个结果True,则整体表达式结果为True,如果都为False则整体为False
- not,参与运算的对象结果为True,则整体结果为False;参与运算的对象结果为False,则整体结果为True;
- 成员运算符
- 检查在指定对象中是否包含指定的成员,包含则返回True,否则返回False
- in
- not in
- 例:
- ‘a’ in ‘abc’ ,返回True
- ‘d’ not in ‘abc’ ,返回True
- 身份运算符
- 检查两个对象是否为同一个引用(是否指向同一个内存地址),如果是返回True,否则返回False
- id(obj),返回引用的地址
- is
- not is
- 三元运算符
- 语法:value1 if 布尔表达式 else value2,如果布尔表达式结果为True,返回value1;否则返回value2
- 位运算符
- 算术运算符
- 数据结构
- 通用方法
- len(obj),返回对象(字符串、列表、元组、字典、集合)中的元素个数
- sum(obj),返回对象(列表、元组、字典、集合)中所有元素的和
- max(obj),返回对象(列表、元组、字典、集合、字符串)中的最大元素
- zip(obj1,obj2,…),将多个对象打包
- del obj,删除指定对象
- 字符串方法
- 语法:字符串.方法名([参数])
- count(sub[, start[, end]),返回字符串中指定位置范围内指定子字符串的数量
- sub,表示待查找的子字符串
- start,表示开始位置索引,索引是从0开始的
- end,表示结束位置的索引
- index(sub[, start[, end]]),返回子字符串在字符串中的索引
- 如果有多个相同的子字符串则返回第一个的索引
- 如果不存在指定的子字符串,则报错
- upper(),将字符串转换为大写
- lower(),将字符串转换为小写
- title(),将每个单词的首字母转换为大写
- startswith(sub),检查是否以指定的子字符串开始,如果是返回True,否则返回False
- endswith(sub),检查是否以指定的子字符串结尾,如果是返回True,否则返回False
- replace(old,new[,count]),替换,可以指定替换次数(默认全部替换)
- strip(),去除字符串前后的空字符
- split([char]),将字符串使用指定的字符(如果不指定则默认使用空字符分割)分割,返回一个列表,属于字符串和列表的相互转化
- join(iterable),将可迭代对象转换为字符串
- 数字不可以用这个方法
- isdecimal(),判断字符串是否由数字组成,如果是返回True,否则返回False
- isalpha(),判断字符串是否由字母组成,如果是返回True,否则返回False
- isupper(),判断字符串是否全部为大写,如果是返回True,否则返回False
- islower(),判断字符串是否全部为小写,如果是返回True,否则返回False
- upper().isupper()
- lower().islower()
- isalnum(),判断字符串是否由字母或者数字组成,如果是返回True,否则返回False
- isalpha(), 判断字符串是否全由字母组成,如果是返回True,否则返回False
- isdigit(), 判断字符串是否全由数字组成,如果是返回True,否则返回False
- isdecimal(), 判断字符串是否全由数字组成,如果是返回True,否则返回False
- isnumeric(), 判断字符串是否全由数字组成,如果是返回True,否则返回False
- rjust(length,’xx’),在字符串左边拼接xx,总长度为length
- ljust(length,’xx’),在字符串右边拼接xx,总长度为length
- encode(),编码
- decode(),解码
- 元组方法
- 语法:元组.方法名([参数])
- index(obj),返回指定元素在元组中的索引,如果指定元素不存在则报错,ValueError: tuple.index(x): x not in tuple
- count(obj),返回指定元素在元组中的数量,如果指定元素不存在则返回0
- 列表方法
- 语法:列表.方法名([参数])
- index(obj),返回指定元素在列表中的索引,如果指定元素不存在则报错
- count(obj),返回指定元素在列表中的数量,如果指定元素不存在则返回0
- clear(),清空列表
- remove(obj),删除列表中的指定元素
- 如果指定元素不存在则报错
- 如果存在多个相同的元素,则删除索引最小的
- pop([index]),根据索引删除列表元素(如果不指定索引则删除最后一个元素)
- apend([obj]),在列表的末尾添加一个元素(可以是任意数据类型)
- insert(index,obj),在列表的指定索引处插入一个元素
- extend(iterable),将一个可迭代对象的元素拆开,再分别添加到列表
- sort([reverse=True]),排序,默认为升序
- reverse(),将列表反向
- copy(),复制列表(在内存中地址不同)
- 字典方法
- 语法:字典.方法名([参数])
- pop(key),删除指定的键
- popitem(),随机删除键值对
- get(key),返回指定键的值,如果键不存在返回None
- values(),以dict_values格式返回字典中的所有值
- keys(),以dict_keys格式返回字典中的所有键
- update(obj),将指定对象更新到字典中
- setdefault(key,default_value),返回指定键key的值,如果这个键不存在则新增键值(key:default_value)对并且返回default_value
- fromkeys(iterable),从可迭代对象快速创建一个字典
- 可迭代对象
- 内部包含__iter__()的对象(字符串、元组、列表、字典、集合),数字无
- 支持循环遍历(for)
- 序列
- 数据类型:字符串、元组、列表
- 操作类型:
- 索引,可以通过索引访问序列中的元素(索引范围:[0,len(obj)-1])
- 语法:obj[index]
- 切片,通过索引返回对象的子元素片段
- 语法:obj[start:end:step]
- start,开始位置,如果省略表示从第一个位置开始
- end,表示结束位置,实际返回的是end-1位置上的元素,如果省略表示取到最后一个元素
- step,表示步长(每间隔多少元素取一个),省略表示1
- 语法:obj[start:end:step]
- 索引,可以通过索引访问序列中的元素(索引范围:[0,len(obj)-1])
- 非序列
- 字典
- 集合
- 通用方法
- 控制结构
- 分支语句(if)
- 单分支
- 描述了程序在布尔表达式结果为True的情况下需要执行的操作
- 语法:注意冒号与缩进(默认为4个空格)
- 例1:输入一个学生的姓名、成绩,如果成绩>=60输出’合格’,小于60输出不合格
- 例2:输入一个整数,判断这个数是奇数还是偶数
- 双分支
- 描述了程序在布尔表达式结果为True或者False的情况下需要执行的操作
- 语法:
- 例1:输入一个学生的姓名、成绩,如果成绩>=60输出’合格’,小于60输出不合格
- 例2:输入一个整数,判断这个数是奇数还是偶数
-
- 多分支
- 描述了程序在不同的布尔表达式下分别需要进行的操作,else不是必须的
- 语法:
- 例1:输入一个学生的姓名、成绩,如果成绩在[91,100]输出’优秀’,成绩在[81,90]输出’良好’,成绩在[60,80]输出’合格’,小于60输出’不合格’
- 嵌套if语句
- 例1:输入一个学生的姓名、成绩,如果成绩在[91,100]输出’优秀’,成绩在[81,90]输出’良好’,成绩在[60,80]输出’合格’,小于60输出’不合格’。如果输入成绩不在0-100提示错误,输入成绩包含非数字提示错误。
- 例2:使用一个字典保存学生的信息(学号作为键,值为列表–包含姓名、性别、手机号三个元素),输入一个学生的学号,如果存在则打印出该学生的信息,如果不存在则新增一个学生
- 单分支
- 循环语句(while、for)
- while语句
- 描述了程序在指定条件成立的情况下重复完成某个操作
- 语法:
- 例1:输出0-9这10个数字
- 例2:计算1+2+…+9+10的和
- 例3:输入1个正整数n,计算1+…+n的和,如果n=1,和为1
- 例4:循环次数未知,可以通过变量值的变化控制循环继续还是结束。
- 使用字典保存用户信息userinfo = {‘user1’:[‘123456′,’张三’],’user2′:[‘123456′,’李四’]},完成注册和登录功能
- 注册,如果用户名已存在,提示错误;如果密码不是6位数字,提示错误
- for语句
- 语法:
- i,变量,可以不需要声明,在循环内部可以直接使用该变量的值
- range(start,end),生成[start,end)范围的数字序列
- 例1:输出0-9这10个数字
- 例2:输入1个正整数n,计算1+…+n的和,如果n=1,和为1
- 例3:将字符串s = ‘qw$^e&sd1*23(‘中的特殊符号去除
- 例4:嵌套for循环。输出一个5×5矩阵
- 例5:输出九九乘法表
- 语法:
- 循环控制语句
- continue,结束当前循环,开始下一次新的循环
- break,终止循环
- 循环与else
- 如果循环没有遇到break语句而终止,则执行else语句中代码;否则不执行
- while语句
- 分支语句(if)
- 函数
- 声明:
- 函数名:必须符合标识符命名规范
- 参数:也叫做形参,可选,可以有多个。在函数内部可以直接使用形参
- 返回值:可选的,可以同时返回多个值。如果没有return语句,则默认返回None
- 调用:函数名([参数1,……])
- 参数:也叫做实参,根据形参传入实参
- 例1:
- 不带参数与返回值
- 例2:
- 带一个参数与一个返回值
- 例3:
- 多个参数与多个返回值
- 参数
- 形参
- 必须参数(位置参数)
- 要求在调用时必须严格按照形参的数量、顺序、数据类型传入实参
- 默认参数
- 在声明函数时通过键值对(key=value)的形式指定形参的值,指定了以后在调用函数时,可以不为该参数传值(此时使用默认值),如果传入则使用实际传入的值。
- 默认参数必须放在位置参数后面
- 可变参数
- *args,接收若干的位置参数,将传入的值封包一个元组args中
- **kwargs,接收若干的关键字参数,将传入的值封包一个字典kwargs中
- 必须参数(位置参数)
- 实参
- 位置参数,根据形参的数量、顺序、数据类型传入实参
- 关键字参数(指定参数)
- 在调用函数时,通过键值对(key=value)形式指定将实参传给某个形参,此时可以不用再关心形参的顺序
- 形参
- 变量作用域
- 局部变量
- 在函数内部声明的变量,只能在函数内部使用
- 全局变量
- 在函数外部声明的变量,可以在函数的内部使用,也可以在函数外部使用
- global
- 在函数内部如果需要修改全局变量(不可变数据类型),需要使用global声明变量
- 如果全局变量为可变数据类型,在函数内部可以任意操作该全局变量,不需要使用global声明,
- 例
- 局部变量
- 函数递归
- 在函数内部return返回函数本身
- 注意
- 递归需要向已知的方向进行
- 递归层数一般不超过1000层
- 例
- 匿名函数
- 语法:lambda [参数1,…]:返回值
- 必须,并且只能有一个返回值
- 不会重复调用的地方,用的比较少
- 例1:
- 例2:排序,通过匿名函数指定用于排序的key
- 语法:lambda [参数1,…]:返回值
- 声明:
- 模块与包
- 自定义模块,py文件即为一个模块
- 包,存在一个__init__.py文件的目录,在包中可以有若干的模块
- 导入
- import 模块名/包名.模块名
- 导入一个模块,使用时通过`模块名.成员名`引用模块下的指定内容
- from 模块名/包名 import 成员1,成员2,……
- 导入模块下的指定成员
- from 模块名/包名 import *
- 导入模块下的所有成员
- as,可以为导入的模块或者成员取别名,使用时通过别名引用即可
- import 模块名/包名.模块名
- 常用模块
- random
- random.randint(a,b),生成[a,b]之间的整数
- random.uniform(a,b),生成[a,b]之间的浮点数
- random.random(),生成[0,1.0]之间的浮点数
- random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数
- random.choice(sequence),从序列中获取一个随机元素
- random.shuffle(x[, random]),将一个列表中的元素打乱
- random.sample(sequence, k),从指定序列中随机获取指定长度的片断
- time
- time()
- sleep(t)
- strftime(fmt)
- %Y – 4位年;
- %m – 2位月;
- %d – 2位天
- %X – 小时:分钟:秒
- %H – 小时;
- %M – 分钟;
- %S – 秒
- sys
- path,以列表返回python环境变量
- os
- os.system(命令),执行系统命令
- os.getcwd(),获取当前工作目录
- os.mkdir(path),创建目录
- os.listdir(path),以列表返回指定目录下的文件名、目录名
- os.path.exists(path),检查指定对象是否存在,存在返回True,否则返回False
- os.path.isdir(path),检查指定路径是否为目录,如果是返回True,否则返回False
- os.path.isfile(path),检查指定路径是否为文件,如果是返回True,否则返回False
- os.path.abspath(path),返回指定对象的绝对路径
- os.path.abspath(__file__),返回当前文件的绝对路径
- os.path.dirname(path),返回指定对象所在的目录
- os.path.join(path,obj),将两个对象拼接成一个路径
- 例1:输入1个目录路径,统计出该目录下有多少个文件和目录
- hashlib
- md5(s:bytes),对明文进行md5加密,返回md5对象,加密后可以通过调用hexdigest()方法获取密文
- random
- 安装第三方模块
- pycharm安装
- pip命令安装(推荐)
- pip install pip -U,更新pip模块
- pip -V,返回版本
- pip list,列出已经安装的所有模块
- pip show 模块名,列出已经安装的指定模块的信息
- pip install 模块名,从默认镜像源安装指定模块
- 国内的镜像源
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:http://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 :https://pypi.mirrors.ustc.edu.cn/simple/
- 华中理工大学:http://pypi.hustunique.com/
- 山东理工大学:http://pypi.sdutlinux.org/
- 豆瓣:http://pypi.douban.com/simple/
- 临时配置:-i 镜像源
- pip install xlrd -i https://pypi.tuna.tsinghua.edu.cn/simple,使用清华大学镜像源安装
- 永久配置:pip config set global.index-url 镜像源
- pip config set global.index-url http://pypi.douban.com/simple/,配置默认镜像源为豆瓣镜像源
- pip install xlrd,配置好以后默认安装时使用豆瓣镜像源
- 国内的镜像源
- pip uninstall 模块名,卸载已经安装的模块
- 文件操作
- Excel
- 模块:xlrd(读)
- pip install xlrd
- 使用步骤:
- 1、打开文件
- open_workbook(path),打开Excel文件,返回一个文件对象,目前只支持xls格式,不支持xlsx
- 例1:f = xlrd.open_workbook(‘./test.xls’),打开当前目录下的test.xls文件
- open_workbook(path),打开Excel文件,返回一个文件对象,目前只支持xls格式,不支持xlsx
- 2、获取文件中的sheet名称
- sheets(),返回excel文件中所有的sheet对象,通过对象调用name返回sheet名称
- 例2:sheets = f.sheets(),获取所有的sheet对象
- sheet_names(),返回excel文件中所有的sheet的名称
- 例3:names = f.sheet_names(),以列表返回所有的sheet的名称
- sheet_by_name(sheet_name),通过sheet名称获取指定的表
- 例4:sheet = f.sheet_by_name(‘表1’),获取名称为表1的sheet
- sheet_by_index(index),通过索引获取指定的表
- 例5:sheet = f.sheet_by_index(1),获取索引为1的sheet
- sheets(),返回excel文件中所有的sheet对象,通过对象调用name返回sheet名称
- 3、通过sheet名称获取指定表中的数据
- 行
- nrows,返回sheet中的行数
- 例6:rows = sheet.nrows
- row_values(row),获取指定行中的数据,参数row为行号
- 例7:values = sheet.row_values(1),获取第2行的数据,以列表返回
- nrows,返回sheet中的行数
- 列
- ncols,返回sheet中的列数
- col_values(col),获取指定列中的数据,参数col为列号
- 单元格
- cell_value(row,col),返回指定单元格的数据
- 行
- 1、打开文件
- 模块:xlwt
- xlwt模块只能写xls文件,不能写xlsx文件
- 安装模块:pip install xlwt
- 使用步骤:
- 1)创建工作簿:book = xlwt.Workbook(),如果写入中文为乱码,可添加参数encoding = ‘utf-8’
- 2)创建工作表:sheet = book.add_sheet(‘Sheet1’)
- 3)向单元格写入内容:sheet.write(m,n,’内容1′)、sheet.write(x,y,’内容2′)
- 4)保存工作簿:book.save(‘excel文件名称’),默认保存在py文件相同路径下,如果该路径下有相同文件,会被新创建的文件覆盖,即xlwt不能修改文件。
- 例1:基本使用
- 例2:设置样式
- 例3:设置字体
- 例4:设置单元格宽度
- 例5:设置边框
- 例6:设置背景色
- 模块:xlrd(读)
- 安装第三方模块
- pycharm安装
- pip命令安装(推荐)
- pip install pip -U,更新pip模块
- pip -V,返回版本
- pip list,列出已经安装的所有模块
- pip show 模块名,列出已经安装的指定模块的信息
- pip install 模块名,从默认镜像源安装指定模块
- 国内的镜像源
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:http://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 :https://pypi.mirrors.ustc.edu.cn/simple/
- 华中理工大学:http://pypi.hustunique.com/
- 山东理工大学:http://pypi.sdutlinux.org/
- 豆瓣:http://pypi.douban.com/simple/
- 临时配置:-i 镜像源
- pip install xlrd -i https://pypi.tuna.tsinghua.edu.cn/simple,使用清华大学镜像源安装
- 永久配置:pip config set global.index-url 镜像源
- pip config set global.index-url http://pypi.douban.com/simple/,配置默认镜像源为豆瓣镜像源
- pip install xlrd,配置好以后默认安装时使用豆瓣镜像源
- 国内的镜像源
- pip uninstall 模块名,卸载已经安装的模块
- 文本文件
- 打开文件
- 语法:open(file[,mode=type,encoding=编码]),打开指定文件,返回一个文件对象
- file,表示待操作的文件,相对路径、绝对路径都行(不能是目录)
- mode,表示打开文件的方式,如果省略则表示只读模式
- r,只读,如果指定的文件不存在,系统报错
- w,覆盖写入,如果指定的文件不存在,系统会自动创建该文件,然后执行写入操作
- a,追加写入,如果指定的文件不存在,系统会自动创建该文件,然后执行写入操作
- b,表示二进制,一般用于对图片类的文件操作
- encoding,指定编码,如果打开文件提示编码错误,再加上encoding参数即可
- 例1:f = open(file=’f2.py’,mode=’r’,encoding=’utf8′),以只读方式打开文件
- 常用方法
- closed,检查文件是否为关闭状态,如果是返回True,否则返回False
- close(),关闭文件
- encoding,返回打开文件的编码
- 例2:
- 语法:open(file[,mode=type,encoding=编码]),打开指定文件,返回一个文件对象
- 读文件
- read(),将文件的所有内容读取出来,保存在字符串中
- readline(),读取文件中的一行,保存在字符串中
- readlines(),将文件的所有内容读取出来,保存在列表中,文件中的每一行为列表中的一个元素
- 写文件
- write(s),将一个字符串写入文件
- writelines(iter),将一个可迭代对象的所有元素写入文件
- 例:
- 有一个文件保存学生的成绩信息,计算出每个学生的总成绩
- 打开文件
- csv文件
- 模块:csv
- 使用步骤:
- 打开文件(open)
- 读取内容(csv.reader())
- 例:
- with语句
- 管理上下文,可以实现打开文件后自动关闭
- 语法:with open(file) as f:
- 例:
- 1、一个目录users,users中使用文件保存用户信息(每个用户一个文件,文件名为账号),文件中包含三行内容,分别是密码、姓名、账户余额,格式如下。
- 2、实现系统的登录、注册功能
- Excel
- 异常
- 语法:
- try
- 将有可能引发异常的语句放在try中
- except
- 捕获异常,并且针对该异常进行相应的处理,可以同时存在多个except语句
- except 异常,捕获1个指定异常
- except (异常1,异常2,…),捕获元组中的异常
- except Exception,捕获所有异常
- 例1:多个except语句捕获不同的异常
- 例2:一个except语句捕获多个异常
- 例3:使用Exception捕获所有异常]
- 例4:判断数字是否合法
- else
- 如果try中的语句没有引发异常,则执行else的代码
- finally
- 无论try语句中的代码是否引发异常,都要执行finally中的代码
- raise
- 主动抛出异常
- 数据库操作
- 模块:pymysql
- pip install pymysql
- 使用步骤
- 1、导入pymysql模块
- 2、调用connect方法连接数据库,返回一个数据库对象
- con = pymysql.connect(user=None,password=None,host=None,db=None,port=None,charset=None)
- user,数据库用户名
- password,数据库用户密码
- host,数据库服务器地址
- db,要连接的database
- port,端口号
- charset,字符集
- 常用方法
- cursor(),创建游标
- commit(),提交事务
- rollback(),回滚事务
- close(),关闭数据库连接
- con = pymysql.connect(user=None,password=None,host=None,db=None,port=None,charset=None)
- 3、创建游标
- cur = con.cursor(),通过数据库连接对象调用cursor()方法创建游标,用于执行SQL语句
- 4、操作数据库
- 通过游标调用相应的方法执行SQL语句
- execute(sql),执行SQL语句,返回该SQL语句影响的行数
- fetchone(),从select语句的查询结果中返回一行记录
- fetchall(),从select语句的查询结果中返回所有记录
- close(),关闭游标
- 5、关闭游标、关闭数据库连接
- cur.close()
- con.close()
- 模块:pymysql