Python是一门面向对象的解释性计算机设计语言
勾选add python to paith 若没有勾选就需要手动去配置环境变量
定义:即注解,解释。分为单行注释和多行注释
作用:
1.给代码做出标注,进行解释和说明。方便别人阅读和理解代码
2.在debug的时候,可以通过注解来一行一行查找问题
以#号开始,#后面的内容就是注解的内容。计算机不会去阅读#后面的内容
以”’ 或者”“” 将注释内容包裹起来
单行注释 # 里面可以使用多行注释 ”’ 或者 “”“
多行注释”’ 或者 “”” 里面可以使用单行注释#
多行注释中可以使用另一种多行注释。如:”’ 中可以使用”“” 在”“”中可以使用”’
Python语句分为 单行语句 和 代码组(代码块)
单行语句:一行python代码
代码组:特定的语言结构,标志是:和缩进(如if ,while等)
定义:关键字指系统已经使用的具有特殊功能的保留标识符
查看系统保留关键字的方法:
import keyword
print(keyword.kwlist)
变量的定义:变量就是可以变化的量(在Python中更像是把变量的值贴到值上面,之后使用这个值就直接用贴在它上面的名字即可)
变量赋值:(三种方式)
方法一:(基本格式)
变量 = 值
方法二:(给多个变量赋相同的值)
变量1 = 变量2 = 变量3 ... = 值
方法三:(给多个变量赋不同的值)
变量1,变量2,变量3... = 值1,值2,值3...
获取变量的类型:(两种方法)
1. type()
print(type(变量))
2. isinstance()-------> isinstance(查看的变量,类型) 返回的值是bool True or False
print(isinstance(4,int))
获取变量在内存中的id:
id()
print(id(变量))
更改变量的值:(对变量重新赋值即可)
val = 1
val = 2
print(val)
变量的命名规则:
1. 使用英文,禁止使用中文
2. 可以使用数字,但是不能用数字开头
3. 特殊符号只能使用下划线_
4. 区分大小写
5. 命名必须要有意义
6. 避免和系统保留的关键字冲突
ps:
* Number中包含: int、float、bool、complex
* 容器数据类型: String、List、Tuple、Set、Dict
* 有序数据类型: String、List、Tuple
* 无序数据类型: Set、Dict
int整型的声明方式:(十进制、二进制、八进制、十六进制)
1. 十进制(0-9)
变量 = 十进制数字
2. 二进制(0-1)
变量 = 0b二进制数字
3. 八进制(0-7)
变量 = 0o八进制数字
4. 十六进制(0-9a-f)
变量 = 0x十六进制数字
float浮点型声明方式:(小数和科学记数法)
1. 小数:
变量 = 带小数点的数字
num = 3.14
2. 科学计数法 e相当于10
变量 = 314e-2
复数定义:由实数部分和虚数部分组成,实数部分是实际存在的数字,虚数部分是现实世界中不存在的数字。在计算机中虚数的单位为j。
声明一个复数的方法:
方法一:
变量 = a + bj
方法二:
变量 = complex(实数 + 虚数) 实数和虚数都只要填入纯数字即可,虚数部分不需要填入单位:j
如:
complex1 = complex(3,4) == complex1 = 3 + 4j
String在所有语言中都是使用最多的数据类型
String类型声明方式:(三种)
方法一:单引号 ''
变量 = '字符串内容'
方法二:双引号 " "
变量 = "字符串内容"
方法三:三引号 ''' ''' 或者 """ """
变量 = '''字符串内容''' 或者 变量 = """字符串内容"""
String声明方式选择原则:
1. 单引号中可以使用双引号
2. 双引号中可以使用单引号
3. 三引号中可以使用单双引号
转义字符:\
1. 转义单引号:\' (使单引号失去原有的特殊意义)
str1 = '古人说:\'nnb\''
2. 转义双引号:\" (使双引号失去原有的特殊意义)
str1 = "古人说,\"nnb\""
3. 换行操作符:\n
str1 = "人之初,\n性本善。"
4. 缩进操作符:\t
str1 = "\t人之初,性本善"
5. 对\自身进行转义:\\
str1 = '在字符串中输出\\'
6. 续行符:\
str1 = '在单行语句\'
'过长时使用,自动续行'
7. 原字符串:在字符串前面加上 r 或者 R ,转义字符串中所有的字符
str1 = r'你好,\n再见\t!'
列表类型的标志:[ ] 中括号
列表的声明方式:
变量 = [值1,值2,值3......]
创建一个空列表:
方法一: 变量 = []
方法二: 变量 = list()
列表索引值
正向索引: 0 1 2 3 4
list1 = [100,200,300,400,500]
反向索引:-5 -4 -3 -2 -1
通过索引访问和修改列表中特定的值
列表[index]
列表[index] = 新的值 可以通过下标来修改列表中的值
元组类型的标志:,逗号
元组类型的声明方式:
方法一:
变量 = (值1,值2,值3....)
方法二:
变量 = 值1,值2,值3....
元组索引值
正向索引 0 1 2 3 4
tuple1 = (100,200,300,400,500)
反向索引 -5 -4 -3 -2 -1
通过索引查看元组中的某个值
元组[index]
元组中的值不能随意修改
集合的标志:无
集合是无序容器,无法通过索引来访问其中的某个值
集合中所有的数据都是唯一的,出现重复的会只保留唯一的其他删除
集合的声明方式:
变量 = {100,200,300,400,500}
创建空集合:
变量 = set()
字典的标志:{ }
字典是无序数据,无法通过索引来访问其中的某个值
字典的声明方式:
变量 = {键:值,键:值,键:值...}
访问和修改字典中的值 :
字典是无序容器,不能使用索引来访问字典中的值。但是可以通过字典特有的键来访问字典中的值:
dict[键]
修改字典中的值:
dict[键] = 新的值
创建一个空字典:
变量 = dict()
dict1 = dict()
变量 = {}
dict1 = {}
正常工作的时候不能用,因为效率太低了。工作原理是把目标数据和所有数据类型一一匹配询问,找到同目标数据类型相同的类型。
result = type(变量名)
print(result)
工作效率比较高,把目标变量和指定的类型做比对,如果目标变量和指定类型为相同类型,则返回True;否则返回False
* 方法一,使用isinstance查看单一类型
isinstance(变量,类型)
如:
var = 123
result = isinstance(var,int)
print(result)
* 方法二,使用isinstance查看目标变量是否属于两个类型中
isinstance(变量,(类型一,类型二))
如:
var = 123
result = isinstance(var,(int,str))
print(result)
自动数据类型转换是系统自发的,不需要人工干预的
自动数据类型转换会从精确度较小的数据类型向精确度较高的数据类型进行转换
自动数据类型转换多发生在运算或者判断的时候
如:
num1 = 25
num2 = 25.0
print(num1 + num2)
又如:
if 1:
print('1会自动转化成True')
将其他数据类型转换成整型
整型: 无需转换
浮点数: 去掉小数部分,只保留整数部分
布尔值: True 转换成 1,False 转换成 0
复数: 复数无法转换成整型
字符串: 只有纯整数字符串才能转换成int。
列表,元组,集合,字典都不能转换成整型
将其他数据类型转换成浮点数
整型: 在整数后面加上.0
浮点数: 无需转换
布尔值: True 转换成 1.0 False 转换成 0.0
复数: 复数无法转换成浮点数
字符串: 只有纯整数字符串和纯浮点数字符串才能转换成浮点数
列表,元组,集合,字典都不能转换成浮点数
其他类型中,相当于bool中的False的情况
整型: 0
浮点型: 0.0
bool: False
复数: 0j 或者 0+0j
字符串: ''(空字符串)
列表: [] 或者 list()
元组: () 或者 tuple()
集合: set()
字典: {} 或者 dict()
其他类型转换成复数complex()
整型: 整型+0j
浮点数: 浮点数+0j
布尔值: True:1+0j False:0j 或者 0+0j
复数: 无需转换
字符串: 字符串中只有纯整数,纯浮点数或者纯复数才能转换成复数
列表、元组、集合、字典都不能转换成复数
其他类型转换成字符串
所有类型都可以转换成字符串,系统会自动给其他类型加上''让它变成字符串
如果要打印出带引号的字符串,可以使用命令repr()
如:
list1 = [1,2,3]
list1 = str(list1)
print(repr(list1))
其他类型转换成列表
整型、浮点型、复数、布尔值都不能转换成列表
字符串:字符串转换成列表,把字符串中的每个值转换成列表中的每一个值,顺序保持不变
列表: 无需转换
元组: 把元组中的每个值转换成列表中的值,顺序保持变
集合: 把集合转换成列表中的每一个值,顺序随机
字典: 把字典中的键转换成列表中的值,顺序随机
其他类型转换成元组
整型、浮点数、复数、布尔值都不能转换成元组
字符串:字符串中的每个字符转换成元组中的一个值,顺序不变
列表: 列表中的每一个值转换成元组中的值,顺序不变
元组: 无需转换
集合: 集合中的每个值转换成元组中的每个值,顺序随机
字典: 字典中的每个键转换成元组中的一个值,顺序随机
其他类型转换成集合
整型、浮点型、复数、布尔值都不能转换成集合
字符串: 字符串中的每个字符转换成集合中的一个值,顺序随机
列表: 列表中的每个值转换成集合中的一个值,顺序随机
元组: 元组中的每个值转换成集合中的一个值,顺序随机
集合: 无需转换
字典: 字典中的每个键转换成集合中的一个值,顺序随机
其他类型转换成字典
* 整型、浮点型、复数、布尔值都不能转换成字典
* 字符串: 不能转换成字典
* 列表: 只有特定的列表格式可以转换成字典
1. 二级列表(且第二级容器的长度一样)
list1 = [[键,值],[键,值],[键,值],[键,值],[键,值]] or list1 = [(键,值),(键,值),(键,值),(键,值)]
2. 一级列表:只含有两个字符的一级列表
list1 = ['键值','键值','键值','键值']
* 元组: 只有特定的元组格式才可以转换成字典
1. 二级元组(且第二级容器的长度一样)
tuple1 = ((键,值),(键,值),(键,值),(键,值))
2. 一级元组:只含有两个字符的一级元组
tuple1 = ('键值','键值','键值','键值')
* 集合: 只有特定的集合格式才可以转换成字典
1. 二级集合(且第二级容器的长度一样)
set1 = {(键,值),(键,值),(jia),()}
** 幂运算(最高优先级)
* 乘法运算
/ 除法运算
// 取商运算(地板除)
% 取余运算
+ 加法运算
- 减法运算
比较运算符运算结果为布尔值: True 、False
<= 小于等于
>= 大于等于
< 小于
> 大于
== 等于
!= 不等于
变量 = 变量 操作符 值 ——————————-> 变量 操作符= 值
**= 幂运算赋值
*= 乘法赋值
/= 除法赋值
//= 取商赋值
%= 取余赋值
+= 加法赋值
-= 减法赋值
= 普通赋值
逻辑运算是布尔值之间的运算
not 逻辑非运算 (逻辑运算中优先级最高)
真变假,假变真
not True == False
not False == True
and 逻辑与运算
有假则假
只有当 and 左右的两个条件都满足的时候 and 的结果才是为真
True and False == False
True and True == True
False and False == False
or 逻辑或运算
有真则真
当 or 左右两个条件有一个满足,则 or 的结果就是为真
True or False == True
False or False == False
True or True == True
xor 逻辑异或运算
不同为真,相同为假
在python中不支持异或操作。
True xor False == True
True xor True == False
False xor False == False
位运算就是在二进制基础上进行的逻辑运算
& 按位与运算
| 按位或运算
~ 按位反转
^ 按位异或运算
<< 左移 << 1 左移1位,相当于*2
>> 右移 >> 1 右移1位,相当于//2
检测变量是否在容器类数据中
in :
变量 in 容器类数据(string,list,tuple,set,dict),检测字典的时候,只检测字典的键
检测变量是不是在容器中
not in :
变量 not in 容器类数据
检测变量是不是不在容器中
判断两个变量在内存中的地址是否相同。
is:
检测两个变量是否是同一个值
is not:
检测两个变量是否不是同一个值
当数值相同的时候,哪些数据类型的id会相同
1. 整数: -5以上的整数
2. 浮点数: 0以上的浮点数
3. 布尔值: 永远相同
4. 复数: 实数部分为0,虚数部分在0j以上
5. 字符串: 永远相同
转义字符: 通过某种特定的格式使得字符的意义发生改变,这就是转义字符,常见转义字符如下:
转义字符 作用描述 使用率
\ 续行符 *
\\ 反斜杠符号(\) ***
\' 单引号 *****
\" 双引号 *****
\a 响铃
\b 退格(backspace)
\e 转义
\000 空
\n 换行 *****
\v 纵向制表符
\t 横向制表符 *****
\r 回车 *****
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出
流程:
做事情的顺序就是流程,计算机中的流程就是代码执行的顺序.默认是从上到下
流程分类:
python默认的代码执行顺序,默认从上到下执行代码
基本格式:
if 条件判断:
条件为真时,执行语句
...
如:
num = 10
if num > 9:
print(num)
基本格式:
if 条件判断:
条件为真的时候执行代码
...
else:
条件为假的时候执行代码
...
如:
num = 10
if num > 10:
print(num)
else:
print(num,'比10小')
基本格式:
if 条件1判断:
条件1为真的时候执行代码
...
elif 条件2判断:
条件2为真的时候执行代码
...
elif 条件3判断:
条件3为真的时候执行代码
...
else:
条件1,条件2,条件3都不满足执行代码
...
如:
day = 1
if day == 1:
print('黄焖鸡')
elif day == 2:
print('面条')
elif day == 3:
print('快餐')
elif day == 4:
print('汉堡')
else:
print('不吃了')
基本结构:
if 条件1判断:
条件1满足执行代码
if 条件2判断:
条件2满足执行代码
if 条件3判断:
条件1,条件2,条件3都满足执行代码
else:
条件3不满足执行代码
else:
条件2不满足执行代码
else:
条件1不满足执行代码
如:
schooldoor = True
buildingdoor = True
classdoor = True
if schooldoor == True:
print('校门开了,走到教学楼')
if buildingdoor == True:
print('教学楼门开了,走到教室')
if classdoor == True:
print('教室门开了,走进教室开始学习')
else:
print('教室门没开,班长帮忙开个门')
else:
print('教学楼门没开,班主任帮忙开个门')
else:
print('校门没开,大爷帮忙开个门')
基本格式:
while 条件判断:
条件为真时,执行代码
....
如: 计算0-100(包含100)所有数之和
num = 0
total = 0
while num <= 100:
total += num
num += 1
print(total)
又如: 输出十行十列的星星
i = 0
while i < 10:
j = 0
while j < 10:
print('✨',end= '')
j += 1
print('\n',end='')
i += 1
又如: 使用单循环输出10行10列的星星
i = 0
while i < 100:
print('✨',end = '')
if i % 10 == 9:
print()
i += 1
又如: 输出十行十列星星,隔行变色
i = 0
while i < 10:
j = 0
while j < 10:
if i % 2 == 0:
print('✨',end = '')
else:
print('❤️',end = '')
j += 1
print()
i += 1
又如: 使用单循环实现隔行变色
i = 0
while i < 100:
if (i // 10) % 2 == 0:
print('✨',end = '')
else:
print('❤️',end = '')
if i % 10 == 9:
print()
i += 1
基本格式:
while True:
循环内容
...
如: 判断用户输入的密码是否正确
error = False
passwd = 123
while True:
userinput = input('请输入密码:')
# 检查密码格式是否正确
for each in userinput:
if each not in '0987654321':
error = True
break
if error == True:
print('密码格式错误,请重新输入纯数字密码!')
error = False
continue
else:
if userinput == str(passwd):
print('密码正确,登录成功!')
break
else:
print('密码错误,请重新输入!')
基本格式:
for 变量 in 容器:
循环体
...
遍历除字典外的不等长的二级容器(列表,元组,集合)
for 变量1 in 容器:
for 变量2 in 变量1:
循环体
...
遍历字典中的键和值:
遍历键和值
for key in dict1:
print(key,dict1[key])
遍历键
for i in xiaoming:
print(i)
#同时遍历目录和值
for key,value in dict1.items():
print(key,value)
#同时遍历目录和值
for k,v in games.items():
print(k,v)
遍历等长的二级容器;
list1 = [
['a','b','c'],
['d','e','f'],
['g','h','i']
]
for x,y,z in list1:
print(x,y,z)
变量 = 0
while 变量 < 4: #4表示列表个数
print(列表变量 [变量])
变量= 变量 + 1
break: 终止循环
如: 输出0-100(包含100)的数字,遇到44则停止循环
i = 0:
while i <= 100:
if i == 44:
break
print(i)
i += 1
continue: 跳过本次循环,开始下一次循环. 开始下一次循环的同时要进行判断
如: 输出0 -100(包含100)的数字,遇到任何带4的则跳过
i = 0
while i <= 100:
if i % 10 == 4 or i // 10 == 4:
i += 1
continue
else:
print(i)
i += 1
def 函数名( ) :
pass(函数内容)
函数名( ) # 调用函数
函数在定义过程中,( )中的参数就是形参.形参没有实际意义,只是为了占位接收实参的值
如:
def hanshu(a,b):
print(a)
print(b)
hanshu(1,2)
如:
def hanshu(a = 1, b = 2):
print(a)
print(b)
hanshu()
hanshu(3,5)
如:
def hanshu(*tuple1):
total = 0
for each in tuple1:
total += each
print(total)
hanshu(1,2,3,4,5,6,7)
”’
如: 传入人名和年纪,计算总和
def age(**dict1):
total = 0
for key in dict1:
total += dict1[key]
print(total)
age(‘徐凤年’= 22 ,’徐骁’= 55 , ‘徐龙象’= 18)
### 6.3.2 实参
#### 6.3.2.1 普通实参
* 在调用函数的时候,( )中的值就是实参.若没有通过关键字的方式进行传参的就是普通实参
* 实参的优先级: 普通实参 > 关键字实参
如:
def hanshu(a):
print(a)
hanshu(‘哗啦啦’)
#### 6.3.2.2 关键字实参
* 在调用函数的时候,通过关键字=值的方式来进行传参,这就是关键字实参
* 实参的优先级: 普通实参 > 关键字实参
如:
def hanshu(a,b):
print(a)
print(b)
hanshu(a=’关键’,b=’字’)
## 6.4 函数的返回值
* 函数按照有无返回值可以分为两类:
1. 有返回值的函数 — 含有return , 函数执行之后,会返回一个结果,可以用变量接受
2. 执行过程的函数 — 没有返回值的函数, 没有return , 函数执行只有不会返回一个结果,用变量接受为 none
* return的作用
1. 为函数的运行返回一个结果
2. 终止函数执行,一旦函数运行到了return,则在return之后的代码将不会运行
## 6.5 函数文档
### 6.5.1 查看函数文档的方法
* 方法一: help( ) —---------help(函数名)
如:
help(print)
help(id)
help(type)
“`
方法二: 函数名. _ _ doc _ _
如:
print.__doc__
id.__doc__
type.__doc__
“`
def 函数名():
”’
功能:
参数:
返回值:
”’
函数内容...
var = '我是全局变量'
def hanshu():
jubuvar = '我是局部变量'
作用一: 使全局变量能进入局部环境
var = '我是全局变量'
def hanshu():
global var
var = '全局变量进入局部环境,修改全局变量'
hanshu()
print(var)
作用二: 将局部变量升级为全局变量
def hanshu():
global var
var = '我升级成全局变量'
hanshu()
print(var)
定义: 在一个函数的内部在定义一个函数,再定义的函数就是内部函数. 内部函数本质上相当于一个局部变量
def outer():
def inner():
print('我是内部函数')
inner()
outer()
内部函数的作用域:
闭包实现方法:
1. 方法一: 使用global关键字实现闭包
lists = []
def hanshu():
global lists
a = '局部变量a'
b = '局部变量b'
def inner1():
print('内部函数inner1')
def inner2():
print('内部函数inner2')
lists = [a,b,inner1,inner2]
hanshu()
num_a = lists[0]
num_b = lists[1]
neibu1 = lists[2]
neibu2 = lists[3]
neibu1()
neibu2()
def hanshu():
a = '局部变量a'
b = '局部变量b'
def inner1():
print('我是内部函数inner1')
def inner2():
print('我是内部函数inner2')
return [a,b,inner1,inner2]
lists = hanshu()
num_a = lists[0]
num_b = lists[1]
neibu1 = lists[2]
neibu2 = lists[3]
neibu1()
neibu2()
def hanshu():
a = '局部变量a'
b = '局部变量b'
def inner1():
print('我是内部函数inner1')
def inner2():
print('我是内部函数inner2')
def bibao():
return [a,b,inner1,inner2]
return bibao
result = hanshu()
lists = result()
num_a = lists[0]
num_b = lists[1]
neibu1 = lists[2]
neibu2 = lists[3]
neibu1()
neibu2()
用于在内部函数中修改内部函数外部的非全局变量的值
通常用于内部函数中使用外部函数的局部变量。
如:
#nonlocal关键字:声明一个变量不是全局变量也不是局部变量(当前函数与另外一个函数之间的变量) python3以后
#此处的变量才会成为全局变量
#外部函数
def outer():
#声明变量
var = 99#对于outer而言局部变量
#内部函数
def inner():
nonlocal var#不是局部变量!
var += 1
print(var)
#调用内部函数
inner()
#调用函数outer
outer()
基本格式:
函数名 = lambda 形参1,形参2,... : (自带return) 函数内容
如:
total = lambda no1,no2,no3 : no1 + no2 + no3
result = total(1,2,3)
print(result)
带有分支结构的lambda表达式:
函数名 = lambda 形参1,形参2,... : 条件为真时执行结果 if 条件判断 else 条件为假时执行结果
如:
large = lambda no1,no2 : no1 if no1 > no2 else no2
又如:
large = lambda no1,no2,no3: no1 if no1 > no2 and no1 > no3 else no2 if no2 > no3 else no3
在函数中调用函数自身的函数就叫做递归函数
如:
def digui(num):
print(num)
if num > 0:
digui(num - 1)
else:
print('-------------------')
print(num)
查看函数文档的方法:
help(函数名)
此方法会直接输出函数文档的内容
函数名.__doc__
直接输出显示函数文档的内容元字符串(可以使用print(函数名.__doc__)来解决无格式问题)
定义函数文档的方法:
def 函数名(参数):
'''
这里编写函数文档
'''
这里编写函数的code...
示例:**
#定义函数文档的方式
def funName(**car):
'''
这里是函数文档
本函数功能是...
要求的参数类型是...
返回的数据是...
'''
print('函数文档的定义方法')
help(funName)
#查看函数文档
'''注释:
函数文档的作用是对函数进行说明,便于阅读和快速掌握函数的使用,通常函数文档需要具有以下信息:
1.函数的作用
2.函数的参数介绍(需要几个参数,分别是什么类型)
3.函数的返回值(数据和类型)
'''
字符串连接操作: +
string1 = '大风车'
string2 = '吱呀吱呀转'
result = string1 + string2
print(result)
字符串复制操作: *
string1 = '女神'
result = string1 * 3
print(result)
字符串索引操作: [ ]
string1 = '我是字符串'
print(string1[4])
print(string1[-1])
字符串分片操作: [::]
分片 [起始位置:结束位置:间隔] --- 不包含结束位置
string1 = '我是字符串'
string2 = string1[1:3]
string3 = string1[::2]
使字符串第一个第一个字母大写
string1 = 'i love you'
result = string1.capitalize()
print(result)
使字符串字母满足标题化格式(所有单词首字母大写)
string1 = 'i love you'
result = string1.title()
print(result)
使字符串中的所有字母都大写
string1 = 'who is your dad ?'
result = string1.upper()
print(result)
使字符串中所有字母都小写
string1 = 'who is your Dad ? '
result = string1.lower()
print(result)
将字符串中的大小写互换
string1 = 'I am your Dad !'
result = string1.swapcase()
print(result)
len( )为内置函数
获取字符串或其他容器的长度
string1 = '我是字符串'
result = len(string1)
print(result)
count(指定字符,起始,终止)
获取指定字符在指定范围内出现的次数,若没有出现过,返回 0
string1 = 'the only way to longer the day is to steal time from night!'
result = string1.count('o',2,6)
print(result)
获取指定字符在字符串中指定范围内第一次出现的索引值. 若没有出现则返回 -1
find(指定字符,起始,终止)
string1 = '8000 words in the world, only the love can kill man'
result = string1.find('a')
print(result)
获取指定字符在字符串中指定范围内第一次出现的索引值,若没有出现则直接报错
string1 = '8000 words in the world, only the love can kill man'
result = string1.index('a')
print(result)
检测字符串是否以指定字符在指定范围内开头
startswith(指定字符,起始,终止)
string1 = 'you are the sun in the world'
result = string1.startswith('a',4,8)
print(result)
检测字符串是否以指定字符在指定范围内结尾
endswith(指定字符,开始,结束)
string1 = 'you are the sun in the world'
result = string1.endswith('w',-5)
print(result)
检测字符串是否满足标题格式
string1 = 'we all forgot the story of the passtime'
result = string1.istitle()
print(result)
检测字符串是否满足全部大写
string1 = 'WE ARE THE DOTA-ALLSTARS'
result = string1.isupper()
print(result)
检测字符串是否满足全部字母小写
string1 = 'we are dota-allstars'
result = string1.islower()
print(result)
和 isnumeric( ) isdecimal( ) 相同
判断字符串是否全部都是数字
num = '123456'
result = num.isdigit()
print(result)
判断字符串是否由字母或者其他文字或者数字组成 (不包含符号)
string1 = 'sad is the reason of thinking too much'
result = string1.isalnum()
print(result)
判断字符串是否由字母或者其他文字组成(不包含符号和数字)
string1 = 'these are only words'
result = string1.isalpha()
print(result)
判断字符串是否由空白字符组成
string1 = '\n\t\r\\ '
result = string1.isspace()
print(result)
将字符串按指定字符进行切割,切割之后放入列表内,返回值是列表
split(指定字符)[-1]
[-1]意思是切最后一块,索引
string1 = '我-有一剑-可开天门!'
list1 = string1.split('-')
print(list1)
用指定字符将列表中的元素拼接成字符串
‘指定字符’.join(列表)
list1 = ['我','有一剑','可开天门']
string2 = '!'.join(list1)
print(string2)
使用字符串中的换行符号\n来切割字符串
string1 = '天不生李淳罡,\n剑道万古如长夜'
list1 = string1.splitlines()
print(list1)
指定字符长度,用0从左到右进行填充
string1 = '123'
result = string1.zfill(10)
print(result)
0000000123
指定字符长度,原字符串居中,使用指定字符填充到指定长度
center(长度,指定字符)
string1 = '呵呵姑娘'
result = string1.center(10,'_')
print(result)
---呵呵姑娘---
指定字符长度,原字符串居左,使用指定字符填充至指定长度
ljust(长度,指定字符)
string1 = '呵呵姑娘'
result = string1.ljust(10,'-')
print(result)
呵呵姑娘------
指定字符长度,原字符串居右,使用指定字符填充至指定长度
rjust(长度,指定字符)
string1 = '呵呵姑娘'
result = string1.rjust(10,'-')
print(result)
------呵呵姑娘
清除字符串左右两边的指定字符
string1 = '___呵呵___'
result = string1.strip('_')
print(result)
呵呵
清除字符串左边指定的字符
string1 = '___呵呵___'
result = string1.lstrip('_')
print(result)
呵呵___
清除字符串右边指定的字符
string1 = '___呵呵___'
result = string1.rstrip('_')
print(reuslt)
___呵呵
字典名 = ”.maketrans(所有要替换的字符,新的字符)
制作存有替换映射关系的字典
string1 = '十年修得宋玉树,百年修得徐凤年,千年修得吕洞玄'
dict1 = ''.maketrans('十百千','百千万')
字符串.translate(字典名)
将字符串按照存有映射关系的字典进行修改
newstring = string1.translate(dict1)
print(newstring)
百年修得宋玉树,千年修得徐凤年,万年修得吕洞玄
字符串的替换
格式: 字符串.replace(要替换的字符,替换的新字符)
string1 = '十年修得宋玉树,百年修得徐凤年,千年修得吕洞玄'
dict2 = string1.replace('十年','二十年',)
print(dict2)
string1 = '{}在{}看见了{}'
result = string1.format('我','莆田','刘姥姥')
print(result)
我在莆田看见了刘姥姥
string1 = '{}在{}看见了{}'
result = string1.format('我','莆田','刘姥姥')
print(result)
我在莆田看见了刘姥姥
string1 = '{2}在{1}看见了{0}'
result = string1.format('刘姥姥','莆田','我')
print(result)
我在莆田看见了刘姥姥
string1 = '{who}在{where}看见了{what}'
result = string1.format(what='刘姥姥',where='莆田',who='我')
print(result)
我在莆田看见了刘姥姥
string1 = '{0[0]}在{0[1]}看见了{0[2]}'
result = string1.format(['我','莆田','刘姥姥'])
print(result)
我在莆田看见了刘姥姥
string1 = '我喜欢吃{:*^11}你喜欢么'
result = string1.format('小龙虾')
print(result)
我喜欢吃****小龙虾****你喜欢么
string1 = '我喜欢吃{:*<11}你喜欢么'
result = string1.format('小龙虾')
print(result)
我喜欢吃小龙虾********你喜欢么
string1 = '我喜欢吃{:*>11}你喜欢么'
result = string1.format('小龙虾')
print(result)
我喜欢吃*******小龙虾你喜欢么
num = '{}转换成二进制为:{:b}'
result = num.format(10,10)
print(result)
num = '{}转换成八进制为:{:o}'
result = num.format(10,10)
print(result)
num = '{}转换成十进制为:{:d}'
result = num.format(10,10)
print(result)
num = '{}转换成十六进制为"{:x}'
result = num.format(10,10)
print(result)
int( ):
将其他类型转换成整型
float( ):
将其他类型转换成浮点型
bool( ):
将其他类型转换成布尔值
complex( ):
将其他类型转换成复数
str( ):
将其他类型转换成字符串
list( ):
将其他类型转换成列表
tuple( ):
将其他类型转换成元组
set( ):
将其他类型转换成集合
dict( ):
将其他类型转换成字典
sum() 方法对系列进行求和计算。
>>> sum([1, 2, 3,], 4)
10
>>> sum((1, 2), 3)
6
type( ):
查看变量的类型
id( ):
查看变量的内存id
print( ):
打印
locals( ):
查看当前环境中的所有变量
abs( )
获取一个数值的绝对值(数据的非负数格式)
num = -99
result = abs(num)
print(result)
max( )
获取序列或者多个参数的最大值
list1 = [1,2,3,4,5,6,7,8,9]
result = max(list1)
print(result)
result = max(1,2,3,4,5,6,7,88,0)
print(result)
min( )
获取序列或者多个参数的最小值
list1 = [1,2,5,6,4,1,345,68,2]
result = min(list1)
print(result)
result = min(1,214,5,6,7235,67)
print(result)
round( )
四舍五入,可以加参数来指定保留几位小数 (整数位,奇数进,偶数不进)
num = 3.1415
result = round(num,3)
print(num)
pow( )
计算指定数字的n次方
result = pow(2,3) # 2 ** 3
print(result)
bin( )
将数字转换成二进制
result = bin(10)
print(result)
oct( )
将数字转换成八进制
result = oct(10)
print(result)
hex( )
将数字转换成十六进制
result = hex(10)
print(result)
Ascii 就是美国标准信息交换代码
chr( )
将指定的Ascii码转换成对应字符
result = chr(97)
print(result)
ord( )
将指定的字符转换成ascii码
result = ord('a')
print(result)
repr()
原样输出字符串的定义格式,单双引号转义
a = '我好\n喜欢\t上一个人'
print(a)
print(a)
eval( )
将字符串转换成代码
string1 = 'num + 1'
num = 1
num = eval(string1)
print(num)
常量 | 描述 |
---|---|
pi | 数学常量 pi(圆周率,一般以π来表示) |
e | 数学常量 e,e即自然常数(自然常数)。 |
在使用数学模块之前需要先导入模块
import math
ceil( )
向上取整
num = 0.1
result = math.ceil(num)
print(result)
floor( )
向下取整
num = 1.9
result = math.floor(num)
print(result)
pow( )
和内置函数功能一样,计算指定值的n次方,返回值是浮点数
result = math.pow(2,3)
print(result)
sqrt( )
开平方根
result = math.sqrt(4)
print(result)
fabs( )
功能和内建函数abs( )功能一样,取绝对值,返回值是浮点数
num = -9
result = fabs(num)
print(result)
modf( )
将指定数字拆分成两部分,一部分为小数部分,一部分为整数部分
num = 12.55
result = math.modf(num)
print(result)
copysign( )
让前面数字的符号和后面数字的符号始终保持一致
result = math.copy(-9,-2)
print(result)
fsum( )
功能和sum( )一样,计算序列的和. 返回值是浮点数
list1 = [1,2,3,4,5,6]
result = math.fabs(list1)
print(result)
result = math.pi
print(result)
result = math.e
print(result)
使用随机数模块前需要先载入该模块
import random
random( )
随机获取 0-1 不包含1的随机浮点数
num = random.random()
print(num)
随获获取指定两数区间整数
num = random.randint()
print(num)
shuffle( )
将一个序列随机打乱,直接改变原序列的顺序
list1 = [1,2,4,5,6,7,89]
random.shuffle(list1)
print(list1)
choice( )
随机从一个序列中取出一个元素
list1 = [1,2,4,5,7,8,5,3]
result = random.choice(list1)
print(result)
uniform( )
随机获取指定范围内的一个浮点数
result = random.uniform(1,100)
print(result)
randrange( )
随机获得指定范围内的整数
result = random.randrange(1,100)
print(result)
list1 = list()
list1 = []
list1 = [1,23,4,5]
list2 = [1]
列表名[索引值]
list1 = ['徐凤年','姜泥','裴南苇','青鸟']
result = list1[1]
print(result)
列表名[索引值] = 新的值
list1[1] = '白狐'
print(list1[1])
del 列表名[索引值]
del list1[1]
pirnt(list1)
del 可以删除任何变量
del list1
list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1 + list2
print(list3)
list1 = ['徐凤年']
list2 = list1 * 3
print(list2)
[起始:终止:间隔] 都不包含终止位置
list1 = [1,2,3,4,5,6,8,9]
result = list1[1:2]
print(result)
result = list1[:4]
print(result)
result = list1[::2]
print(result)
in not in
list1 = ['徐凤年','姜泥','王初东','裴南苇']
result = '徐凤年' in list1
print(result)
result = '白狐脸' not in list1
print(result)
list1 = [1,23,4,5,6,7,8]
result = len(list1)
print(result)
result = max(list1)
print(result)
result = min(list1)
print(result)
list1 = ['徐凤年','姜泥','白狐脸','裴南苇','鱼幼薇','青鸟']
for each in list1
print(each)
num = 0
while num < len(list1):
print(list1[num])
list1 = [
['北凉','徐凤年','徐骁'],
['西蜀','曹常卿','姜泥'],
['离阳','人猫','元本溪']
]
for x,y,z in list1:
print(x)
print(y)
print(z)
list1 = [
['北凉','徐凤年'],
['曹常卿','姜泥'],
['离阳','人猫','元本溪','徐骁']
]
for i in list1:
for j in i:
print(j)
list1 = [1,2,3,4,5,6,7,8,9]
list2 = [i * 2 for i in list1]
print(list2)
list1 = [1,2,3,4,5,6,7,8]
list2 = [i for i in list1 if i % 2 == 0]
print(list2)
list1 = [1,2,3,4,5,6,7,8]
list2 = [9,10,11,12,13,14]
list3 = [i + j for i in list1 for j in list2]
print(list3)
list1 = [1,2,3,4,5,6,7,8]
list2 = [9,10,11,12,13,14]
list3 = [i + j for i in list1 for j in list2 if list1.index(i) == list2.index(j)]
print(list3)
append( )
向列表的末尾添加元素
list1 = [1,2,3,4]
list1.append(5)
print(list1)
insert( )
向列表指定索引位置前添加指定元素
insert(索引,值)
list1 = [1,2,3,4]
list1.insert(1,'人')
print(list1)
extend( )
使用一个列表去扩充另一个列表
list1 = [1,2,3,4,5,6]
list2 = [7,8,9,10,11]
list1.extend(list2)
print(list1)
pop( )
将列表指定位置的值取出来. 默认取出最后一位,删除操作
list1 = [1,2,3]
result = list1.pop(0)
print(result)
print(list1)
result = list1.pop()
print(result)
print(list1)
remove( )
将列表中的指定元素删除,如果有多个重复的值,默认删除第一个
remove(值)
list1 = ['人猫','徐凤年','姜泥']
list1.remove('人猫')
print(list1)
clear( )
将列表清空
list1 = [1,2,3]
list1.clear()
print(list1)
copy( )
复制列表,复制得到的列表和原列表的内存id不同
如果我们复制的是一个二维列表,外层列表变动,复制出来的结果不会变,但是二维列表会随之改变,因为在内存中用的是同一个id
list1 = [1,2,3,4]
list2 = list1.copy()
print(list2)
print(id(list2))
count( )
计算字符串中指定字符出现的次数 不同于字符串的函数count(指定字符,起始,终止)
list1 = [1,1,1,23,44,24,15,66,3]
result = list1.count(1)
print(result)
index( )
获取列表中指定元素出现的索引值
list1 = ['徐骁','徐凤年','姜泥','裴南苇']
result = list1.index('徐凤年')
print(result)
reverse( )
将列表排列顺序颠倒,直接改变原列表
list1 = [1,2,3,4]
list1.reverse()
print(list1)
sort( )
将列表按从小到大的顺序排列. 可用参数key reverse 默认是false,设置为True将是倒序
list1 = [1,2,3,4,5]
list1.sort()
print(list1)
将列表按从大到小的顺序排列
list1.sort(reverse=True)
print(list1)
将列表按自定义的规则排列
def func(num): #一定要有形参
return num // 10 # 一定要有return
list1.sort(key=func,reverse=True)
print(list1)
方法一: 使用tuple( )
tuple1 = tuple()
print(tuple1,type(tuple1))
方法二:使用( )
tuple1 = ()
print(tuple1,type(tuple1))
tuple1 = (1,)
print(tuple1,type(tuple1))
tuple1 = 1,
print(tuple1,type(tuple1))
tuple1 = (1,23,2,4,5)
print(tuple1,type(tuple1))
元组不能直接增加,删除,修改元素,
元组基本操作只支持查看元组内的元素: 元组名[索引]
tuple1 = (1,23,4,5,5,67)
print(tuple1[1])
tuple1 = (1,2,3,4)
tuple2 = (5,6,7,8)
result = tuple1 + tuple2
print(result)
tuple1 = (1,2,3)
result = tuple1 * 2
print(result)
tuple1 = ('徐凤年','徐骁','姜泥','青鸟','王仙之','曹长青','白狐脸儿')
print(tuple1[:2])
print(tuple1[3:])
print(tuple1[1:4])
print(tuple1[::2]) # [起始:终止(不包含):间隔]
tuple1 = ('徐凤年','徐骁','姜泥','青鸟','王仙之','曹长青','白狐脸儿')
result = '徐凤年'in tuple1
print(result)
result = '啦啦啦' not in tuple1
print(result)
tuple1 = ('徐凤年','徐骁','姜泥','青鸟','王仙之','曹长青','白狐脸儿')
length = len(tuple1)
print(length)
tuple2 = (1,23,22,4,5,53,6)
print(max(tuple2))
print(min(tuple2))
list1 = [1,2,3]
tuple3 = tuple(list1)
print(tuple3)
tuple1 = ('徐凤年','徐骁','姜泥','青鸟','王仙之','曹长青','白狐脸儿')
for i in tuple1:
print(i)
tuple1 = ((1,2),(3,4),(5,6))
for x,y in tuple1:
print(x,y)
tuple1 = ((1,2),(3,4,5),(6,7,8,9))
for i in tuple1:
for j in i:
print(j)
tuple1 = ((1,2),(3,4,5),(6,7,8,9))
print(tuple1[0][1])
元组推导式的结果是一个生成器,生成器如果不遍历一遍的话,是不会使用的.
tuple1 = (1,2,3,4,5,6)
tuple2 = (i * 10 for i in tuple1)
for each in tuple2: # 如果不遍历的话,tuple2这个生成器将一直存在但是不做任何操作
print(each)
tuple1 = (1,2,3,4,5,6)
tuple2 = (i * 10 for i in tuple1 if i % 2 == 0)
for each in tuple2:
print(each)
tuple1 = (1,2,3,4,5)
tuple2 = (10,20,30,40)
tuple3 = (i + j for i in tuple1 for j in tuple2)
for each in tuple3:
print(each)
tuple1 = (1,2,3,4)
tuple2 = (5,6,7,8)
tuple3 = (i * j for i in tuple1 for j in tuple2 if tuple1.index(i) == tuple2.index(j))
for each in tuple3:
print(each)
index( ) 查看指定元素在元组中的索引值
tuple1 = ('华为','小米','大米','三星','iphone')
print(tuple1.index('华为'))
print(tuple1.index('三星'))
count( ) 计算指定元素在元组中出现的次数
tuple1 = ('华为','华为','三星','三星','iphone')
print(tuple1.count('华为'))
print(tuple1.count('三星'))
方法一: 使用{ }来创建空字典
dict1 = {}
print(dict1,type(dict1))
方法二: 使用 dict( ) 来创建空字典
dict1 = dict()
print(dict1,type(ditc1))
方法一: 使用 { } 来创建多个元素的字典
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
print(dict1,type(ditc1))
方法二: 使用dict( ) 来创建多个元素的字典
#1.dict(字典)
dict1 = {{'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}}
print(dict1,type(dict1))
#2.dict(等长二级容器)
tuple1 = (('小丽','马丽丽'),('静静','刘文静'),('瑶瑶','王瑶'),('紫薇','孙紫薇'))
dict1 = dict(tuple1)
print(ditc1,type(dict1))
#3.dict(关键字传参)
dict1 = dict(小丽='马丽丽',静静='刘文静',瑶瑶='王瑶',紫薇='孙紫薇')
print(dict1,type(dict1))
#4.dict(zip(键的容器,值的容器))
keys = ('小丽','静静','瑶瑶','紫薇')
values = ('马丽丽','刘文静','王瑶','孙紫薇')
dict1 = dict(zip(keys,values))
字典[键] = 值
如果键不存在在字典中,则直接将这个键值对添加到字典中作为新元素
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict1['班长'] = '戴帅林'
print(dict1)
del 字典[键]
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
del dict1['小丽']
print(dict1)
变量[键] = 新值
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict1['小丽'] = '马冬梅'
print(dict1)
变量[键]
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
print(dict1['小丽'])
序列相加,序列相乘,分片这些序列操作字典都不支持
字典只能进行成员检测(只检测字典中的键)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = '小丽' in dict1
print(result)
reslut = '王贷' not in dict1
print(result)
len()
计算字典中元素的长度
max()
获取字典中最大的键
min()
获取字典中最大的值
dict()
创建空字典或者将其他类型转化字典
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
length = len(dict1)
print(length)
dict2 = {1:'数字',2:'数字',3:'数字',4:'数字',5:'数字',6:'数字',}
maxnum = max(dict2)
print(maxnum)
minnum = min(dict2)
print(minnum)
遍历键
for 变量i in 字典:
使用i遍历所有的键,有键就可以通过变量访问其值
遍历键和值
for 变量i,变量j in 字典.items():
使用变量i遍历所有键,通过变量j遍历所有值
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
#方法一:
for i in dict1: 遍历的是键
print(i , dict1[i])
#方法二:这种方法是同时把字典里面的键值对同时遍历出来
for i,j in dict1.items():
print(i,j)
#方法三:这种方法是把字典里面的值遍历出来
for i in dict1.values():
print(i)
变量= {key:value for key,value in 字典.items()}
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict2 = {key:'@'+value for key,value in dict1.items()}
print(dict2)
变量= {key:value for key,value in 字典.items() if 条件表达式}
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict2 = {key:value for key,value in dict1.items() if len(key) == len(value)}
print(dict2)
变量 = {i+x:j+y for i,j in 字典1.items for x,y in 字典2.items()}
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict2 = {'班长':'戴帅林'}
dict3 = {key+i : value+j for key,value in dict1.items() for i,j in dict2.items()}
print(dict3)
变量 = {i+x:j+y for i,j in 字典1.items for x,y in 字典2.items() if 条件表达式}
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict2 = {'班长':'戴帅林'}
dict3 = {key+i : value+j for key,value in dict1.items() for i,j in dict2.items() if len(value) == len(j)}
print(dict3)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict1.clear()
print(dict1)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict2 = dict1.copy()
print(dict2)
list1 = [1,2,3,4,5]
dict1 = {}.fromkeys(list1,'数字')
print(dict1)
{1:'数字',2:'数字',3:'数字',4:'数字'}
# 若键存在,则返回值
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = dict1.get('小丽')
print(result)
# 若键不存在,则返回None.
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = dict1.get('班长')
print(result)
# 若键不存在,但是设定了返回值.则返回返回值
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = dict1.get('班长','不在')
print(result)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = dict1.items()
print(result)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
list1 = dict1.keys()
print(list1)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
list1 = dict1.values()
print(list2)
# 移除存在的键和值
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = dict1.pop('小丽')
print(dict1,result)
# 移除不存在的键,未设置默认值,则报错!!! pop(不存在的键,还tm没设置默认值) 等着报错吧!!!
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = dict1.pop('班长')
print(dict1,result)
# 移除不存在的键,设置了默认值 pop(不存在的键,设置了默认值),则返回默认值
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = dict1.pop('班长','不在')
print(dict1,result)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
result = dict1.popitem()
print(result)
# 若要添加的键不存在,则新增进字典中
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict1.setdefault('班长','戴帅林')
print(dict1)
# 若要添加的键已经在字典中,则不做任何操作
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict1.setdefault('小丽','马丽丽')
print(dict1)
# update(关键字传参)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict1.update(小丽='马丽丽',静静='刘文静',瑶瑶='大熊太美',紫薇='戏精')
print(dict1)
# update(新的字典)
dict1 = {'小丽':'马丽丽','静静':'刘文静','瑶瑶':'王瑶','紫薇':'孙紫薇'}
dict1.update({'小丽':'马里奥','静静':'静毛线','瑶瑶':'大熊太美','紫薇':'戏精'})
print(dict1)
集合的特征:
使用set() 来创建空集合
set1 = set()
print(set1,type(set1))
set1 = {1,2,3,4,5,6}
print(set1,type(set1))
集合只支持成员检测这一个序列操作
set1 = {1,2,3,44,51,6}
result = 1 in set1
print(result)
result = 222 not in set1
print(result)
set1 = {1,2,3,4,5,6}
length = len(set1)
print(length)
maxnum = max(set1)
print(maxnum)
minnum = min(set1)
print(minnum)
list1 = [1,2,3,4,5,6,7]
set1 = set(list1)
print(set1,type(set1))
set1 = {1,23,45,3,7,54}
for each in set1:
print(each)
set1 = {('徐骁','徐凤年'),('西楚姜皇帝','姜泥'),('谢灵云','白狐脸'),('无名氏','呵呵')}
for x,y in set1:
print(x,y)
set1 = {('不才','任然'),('张楚','窦唯','何勇'),('陈粒')}
for i in set1:
for j in i:
print(j)
set1 = {1,2,3,4,5,6,7,8}
result = {i*2 for i in set1}
print(result)
set1 = {1,2,3,4,5,6,7,8}
result = {i * 10 for i in set1 if i % 2 == 0}
print(result)
set1 = {'窦唯','Gai','万晓利'}
set2 = {'女儿情','天干物燥','噢,乖'}
result = {i + j for i in set1 for j in set2}
print(result)
set1 = {'窦唯','Gai','万晓利'}
set2 = {'女儿情','天干物燥','噢,乖'}
result = {i + j for i in set1 for j in set2 if len(i) == len(j)}
set1 = {'窦唯','Gai','万晓利'}
set1.add('朴树')
print(set1)
set1 = {'窦唯','Gai','万晓利'}
result = set1.pop()
print(result)
set1 = {'窦唯','Gai','万晓利'}
# remove(不存在的元素) --- 报错
set1.remove('窦唯老婆')
# remove(存在的元素) --- 正常删除
set1.remove('窦唯')
set1 = {'窦唯','Gai','万晓利'}
# discard(不存在的元素) --- 不做任何操作
set1.discard('窦唯老婆')
# discard(存在的元素) --- 正常删除
set1.discard('窦唯')
set1 = {'窦唯','Gai','万晓利'}
set1.clear()
print(set1)
set1 = {'窦唯','Gai','万晓利'}
set2 = set1.copy()
print(set2,type(set2))
set1 = {'徐凤年','徐骁','李义山'}
set2 = {'徐凤年','姜泥','青鸟'}
result = set1.difference(set2)
print(result)
set1 = {'徐凤年','徐骁','李义山'}
set2 = {'徐凤年','姜泥','青鸟'}
set1.difference_update(set2)
print(set1)
set1 = {'徐凤年','徐骁','李义山'}
set2 = {'徐凤年','姜泥','青鸟'}
result = set1.intersection(set2)
print(result)
set1 = {'徐凤年','徐骁','李义山'}
set2 = {'徐凤年','姜泥','青鸟'}
set1.intersection_update(set2)
print(set1)
set1 = {'徐凤年','徐骁','李义山'}
set2 = {'徐凤年','姜泥','青鸟'}
result = set1.union(set2)
print(result)
set1 = {'徐凤年','徐骁','李义山'}
set2 = {'徐凤年','姜泥','青鸟'}
set1.update(set2)
print(set1)
set1 = {'徐凤年','徐骁','李义山'}
set2 = {'徐凤年','姜泥','青鸟'}
result = set1.symmetric_difference(set2)
print(result)
set1 = {'徐凤年','徐骁','李义山'}
set2 = {'徐凤年','姜泥','青鸟'}
set1.symmetric_difference_update(set2)
print(set1)
set1 = {'徐凤年','徐骁','李义山','姜泥','青鸟'}
set2 = {'徐凤年','姜泥','青鸟'}
result = set1.issuperset(set2)
print(result)
set1 = {'徐凤年','徐骁','李义山','姜泥','青鸟'}
set2 = {'徐凤年','姜泥','青鸟'}
result = set2.issubset(set1)
print(result)
set1 = {'徐凤年','徐骁','李义山','姜泥','青鸟'}
set2 = {'徐凤年','姜泥','青鸟'}
result = set1.isdisjoint(set2)
print(result)
冰冻集合就是一旦创建,不可以在进行任何修改的集合。
set1 = frozenset()
print(set1,type(set1))
set1 = frozenset({1,2,3,4,5,6,8,7,9})
print(set1,type(set1))
set1 = frozenset({1,2,3,4,5,6,8,7,9})
for i in set1:
print(i)
result = {i+2 for i in set1}
print(result)
冰冻集合没有专用的函数
但是
冰冻集合可以使用所有不改变原集合的集合函数
# 1. 使用open()打开指定文件
fp = open('/Users/apple/desktop/01.txt','w')
# 2. 对文件进行写入操作
fp.write('写入操作,输入........')
# 3. 关闭文件
fp.close()
# 1. 使用open()打开指定文件
fp = open('/Users/apple/desktop/01.txt','r')
# 2. 对文件进行读取操作
result = fp.read()
print(result)
# 3. 关闭文件
fp.close()
变量 = open('文件绝对路径','打开模式')
打开模式:
基础模式:( w,a,x,r )
w: write 写入模式 若文件不存在,则新建. 若已经存在,打开文件并清空原有内容
a: append 追加模式 若文件不存在,则新建. 若已经存在,则打开文件,则原有内容基础上添加
x: xor 异或模式 若文件不存在,则新建. 若已经存在,则报错
r: read 读取模式 可执行读取文件的相关操作
增强模式( +,b ) 只能和基础模式配合使用
+: plus 读写模式 在w,a,x 或者 r 的基础上加+,则实现读写都可的功能
b: byte 位模式 在位模式下进行读或者写或者读写的操作
组合方式:
w: 若文件不存在,则新建文件等待写入操作. 若文件已存在,则打开文件并清空原内容,之后可以进行写入操作.
a: 若文件不存在,则新建文件等待写入操作. 若文件已存在,则打开文件并清空原内容,之后可以进行写入操作.
x: 若文件不存在,则新建文件等待写入操作. 若文件已存在,则直接报错!
r: 若文件不存在,则报错! 若文件已存在,则打开文件,并可进行读取相关的操作
w+: 若文件不存在,则新建文件等待写入操作. 若文件已经存在,则打开文件并清空内容,之后可执行写入或读取
r+: 若文件不存在,则报错! 若文件已经存在,则打开文件,之后可执行写入操作和读取操作
x+: 若文件不存在,则新建文件等待写入操作, 若文件已经存在,则报错!
a+: 若文件不存在,则新建文件等待写入操作, 若文件已经存在,则打开原文件,在原文件的基础上可追加或读取
wb: 若文件不存在,则新建文件等待写入操作.若文件已经存在,则打开文件并清空内容.所有写入需要用encode()编码
rb: 若文件不存在,则报错! 若文件已经存在,则打开文件可进行读取操作.所有读取内容要用decode()解码
ab: 若文件不存在,则新建文件等待写入操作,若文件已经存在,则打开文件并追加内容.所有写入需要用encode()编码
xb: 若文件不存在,则新建文件等待写入操作,若文件已经存在,则报错!
wb+: 若文件不存在,则新建文件且可读可写.若文件已存在,清空内容,可读可写.读要用decode()解码.写要用 encode()编码
rb+: 若文件不存在,则报错! 若文件已存在,则打开文件,可读可写.读要用decode()解码.写要用encode()编码
ab+: 若文件不存在,则新建文件且可读可写.若文件已存在,打开原内容,追加内容.读要用decode()解码.写要用 encode()编码
xb+: 若文件不存在,则新建文件且可读可写,若文件已存在,直接报错! 读要用decode()解码.写要用encode()编码
基本模式
w write 写入模式
文件不存在则新建文件,文件已存在则打开并且清空文件!指针指向开头
r read 读取模式
文件不存在则报错!文件已存在则打开文件,指针指向开头
x xor 异或模式
文件不存在则新建文件,文件已存在则报错,指针指向开头
a append 追加模式
文件不存在则新建文件,文件已存在则打开文件,指针指向末尾
"""
# 扩展模式(必须有一个基本模式才可以使用扩展模式)
# + plus 增强模式/plus
# 赋予文件读取和写入的双重权限
# b bytes bytes模式
# 以bytes 模式读取或者写入数据
# b 模式
# bytes 类型:一种特殊的字符串
# 字符串 - 运行(转换) 计算机识别的内容
# butes 计算机识别的内容(程序员预先完成了转换)
"""
tpp = '晚上去哪里浪啊'
print(tpp,type(tpp))
# 编码操作
tpp1 = tpp.encode() # 转成计算机能识别的编码
print(tpp1,type(tpp1))
tpp2 = tpp1.decode() # 转成人能识别的字符串
print(tpp2,type(tpp2))
如: 使用r+模式打开文件
# 打开文件
fp = open('/Users/apple/desktop/01.txt','r+') # 若此时01.txt不存在,则直接报错
# 先读取原有内容
content = fp.read()
print(content)
# 写入新内容
fp.write('写入内容')
# 移动指针
fp.seek(0) #单位是字节 0表示移动到开头位置
# 再读取现在的内容
content = fp.read()
print(content)
# 关闭文件
fp.close()
如: a+b模式打开或新建文件
# 打开文件
fp = open('/Users/apple/desktop/01.txt','a+b')
# 追加内容
fp.write('在原有基础上追加内容'.encode())
# 移动指针到开头
fp.seek(0)
# 读取全部内容
content = fp.read().decode()
print(content)
# 关闭文件
fp.close()
fp = open('/Users/apple/desktop/01.xtx' ,'r')
content = fp.read()
print(content)
fp.close()
fp = open('/Users/apple/desktop/01.txt','r')
content = fp.read(20)
print(content)
fp.close()
num = open('write.txt','w',encoding='utf-8')
num.write('喂,对面的看过来来')
num.close()
文件.readline( ) 默认读取一行内容
文件.readline(指定字符个数) 默认读取指定字符长度内容,超过一行按一行算,不够一行就不够呗
fp = open('/Users/apple/desktop/01.txt','r')
# 读取一行文件的内容
content = fp.readline()
print(content)
# 移动指针
fp.seek(0)
# 读取指定字符长度,若不满足一行则只读5个字符,若超过一行,则只读一行字符
content = fp.readline(5)
print(content)
# 关闭文件
fp.close()
# 打开文件
fp = open.(''/Users/apple/desktop/01.txt','r')
# 默认读取全部行
content = fp.readlines()
print(content)
# 移动指针
fp.seek(0)
# 读取指定字符长度的行数
content = fp.readlines(20) # 字符长度若不足一行,则按一行算,若超过一行,则显示下一整行
print(content)
# 关闭文件
fp.close()
表示写入很多行,参数可以是list格式
nu = ['少时诵诗书所\n','王微微发热污染\n','水电费为具有天赋带\n','区文明办程序']
o = open('writelines.txt','w',encoding='utf-8')
o.writelines(nu)
o.close()
保留指定的字节长度,其他都删除 单位:字节!!!!
fp = open('/Users/apple/desktop/01.txt'.'r+')
fp.truncate(12) # 保留指定的字节长度,其他都删除
fp.close()
fp = open('/Users/apple/desktop/01.txt','r')
# 获取指针位置在读取
num = fp.tell()
print(num)
fp.close()
fp = open('/Users/apple/desktop/01.txt','r')
fp.seek(21)
content = fp.read() # read() 的内容是在指针之后的内容才能读取
print(content)
fp.close()
# 自定义函数实现读取文件中的指定行数
def myReadLines(path,hang=-1,sep='\n'):
# path:要打开的文件路径 hang:显示文件内容的行数 sep:当前操作系统中默认的换行符号
# 打开指定文件
fp = open(path,'r')
# 获取文件内所有内容
content = fp.read()
# 使用换行符号切割字符串,放入列表lists中
#若最后一行切完是一个空字符串,则需要分片去掉最后一个 lists = content.split(sep)[0:-1]
lists = content.split(sep)
# 判断用户输入的行数,并确认最终输出的总行数
maxhang = len(lists)
if hang < 0 or hang >= maxhang:
hang = maxhang
else:
hang = int(hang)
result = [i + sep for i in lists[:hang]] # 用分片来控制最终的列表的长度
# 如果要用列表的形式直接呈现,直接输入result就可以了
#print(result)
# 遍历最终的列表result 输出内容
for i in result:
print(i,end='')
myReadLines('/Users/apple/desktop/01.txt',5)
使用os模块之前要先导入
import os
功能: 获取指定路径文件夹下所有的文件及文件夹的列表
格式: os.listdir(目标文件夹路径)
返回值: 所有文件及文件夹的列表
lists = os.listdir(/Users/apple/desktop)
print(lsits)
功能: 在指定路径创建空文件夹,如果不指定路径,直接写文件名的话,默认在当前目录下创建一个新文件
格式:os.mkdir(目录路径,0o权限数组) 未设定则按默认权限创建
返回值:创建的文件夹绝对路径,
os.mkdir('/Users/apple/dekstop/a',0o755)
os.mkdir('/Users/apple/desktop/b)
功能: 删除指定路径的空文件夹
格式: os.rmdir(目录路径)
返回值:None
os.rmdir('/Users/apple/desktop/a')
功能: 递归创建空文件夹
格式: os.makedirs(目录路径)
返回值: 创建的目录的字符串路径
os.makedirs('/Users/apple/desktop/aaa/bb/c')
功能: 递归删除空文件夹
格式: os.removedirs(目录路径)
返回值: None
os.removedirs('/Users/apple/desktop/aaa/bb/c')
功能: 获取当前工作目录
格式: os.getcwd()
返回值:当前工作的目录路径字符串
pathnow = os.getcwd()
print(pathnow)
功能: 修改当前工作目录
格式: os.chdir(目的地路径)
返回值:None
# 改变文件夹,在桌面创建新文件
os.chdir('/Users/apple/desktop')
fp = open('01.txt','w')
print(os.getcwd())
fp.close
功能: 重命名文件夹
格式: os.rename(原文件夹或文件路径,新名文件夹或文件路径)
返回值: None
os.rename('/Users/apple/desktop/01.txt','/Users/apple/desktop/02.txt')
功能: 获取指定文件夹或文件的相关信息(属性)
格式: os.stat(指定文件夹或文件的目录)
返回值: 包含属性信息的元组
result = os.stat('/Users/apple/desktop/01.txt)
print(result)
功能: 获取当前系统的环境变量信息
格式: os.getenv(获取的环境变量名称) ‘PATH’ 要大写
返回值: 字符串
result = os.getenv('PATH')
print(result.split(':'))
功能: 设置环境变量信息
格式: os.putenv(环境变量参数,新增值)
返回值: None
os.putenv('PATH','/')
os.system('mydir')
功能: 在python中使用系统命令 (慎用)
格式: os.system(系统命令)
返回值: 系统命令返回的结果
os.system('ls')
用于获取python中的临时变量,相当于在系统中使用export命令
获取环境变量
print(os.environ['PATH'])
#修改环境变量
os.environ['PATH'] += ':/home/conghao'
print(os.environ['PATH'])
os.system('conghao /')
功能: 判断指定的路径是不是绝对路径
格式: os.path.abspath(指定路径)
返回值: True: 是绝对路径 False: 不是绝对路径
result = os.path.abspath('/Users/apple/desktop)
print(result)
功能: 获取路径中的路径部分
格式: os.path.dirname(指定路径)
返回值: 返回路径部分
dname = os.path.dirname('/Users/apple/desktop')
print(dname)
功能:获取路径中的文件夹或者文件名称(只要路径的最后一部分)
格式: os.path.basename()
返回值: 返回指定路径的主体部分
bname = os.path.basename('/Users/apple/desktop)
print(bname)
功能: 将两个路径连接起来,合成一个路径
格式: os.path.join(路径1,路径2)
返回值: 合成之后的路径
fullpath = os.path.join('/Users/apple/','desktop')
print(fullpath)
功能: 将指定路径的文件拆分成路径和主体部分,放入元组中
格式: os.path.split(指定绝对路径)
返回值: 元组 (路径部分,主体部分)
path1 = '/Users/apple/desktop/01.txt'
tuple1 = os.path.split(path1)
print(tuple1)
功能:将一个文件名切成名字和后缀两个部分
格式: os.path.splitext(指定路径)
返回值: 元组 (名称,扩展名)
path1 = '/Users/apple/desktop/01.txt'
tuple1 = os.path.splitext(path1)
print(tuple1)
功能: 获取一个文件的大小
格式: os.path.getsize(指定文件路径)
返回值: 文件大小
path1 = '/Users/apple/desktop/01.txt'
size = os.path.getsize(path1)
print(size)
功能: 判断指定路径是不是文件夹
格式: os.path.isdir(指定路径)
返回值: True 是文件夹 False 不是文件夹
result = os.path.isdir('/Users/appple/desktop')
print(result)
功能: 判断指定路径是不是文件
格式: os.path.isfile(指定路径)
返回值: True 是文件 False 不是文件
result = os.path.isfile('/Users/apple/desktop/01.txt')
print(result)
功能: 判断指定路径是不是快捷方式
格式: os.path.islink(指定路径)
返回值: True 是链接 False 不是链接
result = os.path.islink('/Users/apple/desktop/01.txt')
print(result)
功能: 获取指定路径的文件或者文件夹的创建时间
格式: os.path.getctime(指定路径)
返回值: 时间戳
import time
creattime = os.path.getctime('/Users/apple/desktop/test/')
print(creattime)
功能: 获取指定路径的文件或者文件夹的访问时间
格式: os.path.getatime(指定路径)
返回值: 时间戳
activetime = os.path.getatime('/Users/apple/desktop')
print(activetime)
功能: 获取指定路径文件或者文件夹的修改时间
格式: os.path.getmtime(指定路径)
返回值: 时间戳
modifytime = os.path.getmtime('/Users/apple/desktop/01.txt)
print(modifytime)
功能: 判断指定路径的文件或者文件夹是否存在
格式: os.path.exists(指定路径)
返回值: True 存在 False 不存在
result = os.path.exists(指定路径)
print(result)
功能: 判断指定路径是不是一个绝对路径
格式: os.path.isabs(指定路径)
返回值: True 是绝对路径 False 不是绝对路径
result = os.path.isabs('/Users/apple/desktop/01.txt')
print(result)
功能: 判断两个路径指向的是不是同一个文件
格式: os.path.samefile(指定路径1,指定路径2)
返回值: True 是相同文件 False 不是同一个文件
path1 = '../../desktop/01.txt'
path2 = '/Users/apple/desktop/01.txt'
result = os.path.sanmefile(path1,path2)
print(result)
print(os.dir)
当前文件夹符号
用 . 来表示
print(os.pardir)
当前文件夹的上一层目录 即父级文件夹
用 .. 表示
print(os.name)
当前系统的内核名称
posix linux 或者 Unix 操作系统
nt Windows 操作系统
window \r\n
linux \n
mac \r或者 \n
print(os.sep)
当前系统的路径分隔符
Linux / Windows \ (Windows 兼容正反斜线)
print(os.extsep)
当前系统的文件名和后缀之间的分隔符
win/linux/unix -> .
# 自定义函数获取文件夹大小
import os
def get_dir_size(path):
# 获取指定文件夹的文件信息
lists = os.listdir(path)
# 初始化大小计数
size = 0
# 通过拼接获取完整路径
for i in lists:
fullpath = os.path.join(path,i)
# 判断路径是不是文件,是文件则获取大小并累加到size.
if os.path.isfile(fullpath) or os.path.islink(fullpath):
size += os.path.getsize(fullpath)
# 判断路径是不是文件夹,如果是文件夹则递归计算大小,累加到size中
elif os.path.isdir(fullpath):
size += get_dir_size(fullpath)
return size
# 调用函数
result = get_dir_size('/Users/apple/desktop/python教材')
print(result)
使用shutil高级系统模块需要先导入该模块
import shutil
功能: 将指定路径的文件复制到另一个路径
格式: shutil.copy(‘原文件路径’,’目标路径’)
返回值: 目标路径
import shutil
shutil.copy('/Users/apple/desktop/01.py','/Users/apple/desktop/test/a.py')
功能: 复制指定路径的文件和文件信息到指定另一个路径
格式: shutil.copy2(‘原文件路径’,’目标路径’)
返回值: 目标路径
import shutil
shutil.copy2('/Users/apple/desktop/01.py','/Users/apple/desktop/test/a.py')
功能: 复制指定文件的内容到另一个文件中(默认清空另一个文件) 固定r读取 w 写入
格式: shutil.copyfile(‘原文件路径’,’目标路径’)
返回值: 目标文件路径
复制给指定路径内容会覆盖原有的文件内容
import shutil
shutil.copyfile('/Users/apple/desktop/01.txt','/Users/apple/desktop/test/a.txt')
功能: 复制指定文件的内容到另一个文件中(可选择打开模式)
格式: shutil.copyfileobj(open(‘原文件路径’,’打开模式’),open(‘目标地址’,’打开模式’))
import shutil
shutil.copyfileobj(open('/Users/apple/desktop/01.txt','r'),open('/Users/apple/desktop/test/a.txt','a'))
功能: 复制一个文件夹到指定新位置,新文件夹会自动创建
格式: shutil.copy(‘原文件夹路径’,’指定路径’)
import shutil
shutil.copytree('/Users/apple/desktop/test/','/Users/appple/desktop/a/')
功能: 复制一个文件夹的权限给另一个文件夹(两个必须都存在)
格式: shutil.copymod(‘原文件夹路径’,’指定路径’)
import shutil
shutil.copymod('/Users/apple/desktop/test/','/Users/apple/deskt/a/)
功能: 复制一个文件夹的相关信息给另一个文件夹(两个都必须存在)
格式: shutil.copystat(‘原文件夹路径’,’目标文件夹路径’)
import shutil
shutil.copystat('/Users/apple/desktop/a','/Users/apple/desktop/test/')
功能: 递归删除非空文件夹 (os.removedirs()只能递归删除空文件夹)
格式: shutil.rmtree(‘删除文件夹的路径’)
import shutil
shutil.rmtree('/Users/apple/desktop/test')
功能: 剪切,将指定文件剪切到另一个位置
格式: shutil.move(‘原文件路径’,’指定路径’)
import shutil
shutil.move('/Users/apple/desktop/a/01.py','/Users/apple/desktop')
shutil.move('/Users/apple/PycharmProjects','/Users/apple/desktop/')
功能: 查找系统命令所在的文件路径
格式: shutil.which(‘系统命令’)
返回值: 命令所在的系统变量PATH
import shutil
result = shutil.which('ls')
print(result)
功能: 获取指定系统磁盘的使用情况
格式: shutil.disk_usage(‘系统磁盘路径’)
import shutil
result = shutil.disk_usage('/')
print(result)
归档:将多个文件合并到一个文件当中,这种操作方式就是归档。
解包:将归档的文件进行释放。
压缩:压缩时将多个文件进行有损或者无损的合并到一个文件当中。
解压缩:就是压缩的反向操作,将压缩文件中的多个文件,释放出来。
功能: 创建一个归档文件,指定归档文件的格式.再将其他文件或文件夹放入归档文件中
格式: shutil.make_archive(‘归档文件路径’,’归档文件格式’,’放入的文件或文件夹路径’)
返回值:归档文件的最终路径
import shutil
shutil.make_archive('/Users/apple/desktop/guidan','zip','/Users/apple/desktop/test')
功能: 将归档文件夹中的全部文件解包到指定路径
格式: shutil.unpack_archive(‘归档文件路径’,’输出路径’)
注意:文件夹不存在会新建文件夹
import shutil
shutil.unpack_archive('/Users/apple/desktop/guidan.zip','/Users/apple/desktop/nimabi')
功能: 获取当前系统允许的压缩文件格式
格式:shutil.get_archive_formats()
返回值:列表 [(后缀,解释),(后缀,解释),(后缀,解释)…]
import shutil
result = shutil.get_archive_formats()
print(result)
功能: 获取当前系统中允许的解包格式
import shutil
result = shutil.get_unpack_formats()
print(result)
进行压缩操作之前要先导入压缩模块
import zipfile
功能: 创建一个压缩文件
格式: zipfile.ZipFile(1.创建压缩文件位置, 2.打开模式, 3.是否压缩, 4.压缩文件是否大于2G)
参数:
1. 创建压缩文件绝对路径
2. 打开模式
w : 新建一个压缩文件夹,或者覆盖一个已有的zip文档
a : 将数据追加到一个现存的zip文档中
r : 打开一个已有的zip文件
3. 压缩方式:
zipfile.ZIP_STORED 不存储不进行压缩(默认)
zipfile.ZIP_DEFLATED 对文件进行压缩
4. 压缩文件是否大于2G
若创建的压缩文件要大于2G,则将zip64 设为 True
若创建的压缩文件不需要2G,则默认False
功能: 将指定文件添加到zip文件中
格式: zipfile.write(要添加的文件,添加后新名字,压缩方式)
参数:
1. 要添加的文件:
要写入压缩文件中的添加文件的绝对路径
2. 添加后的新名字:
在压缩文件中的名字,如果不需要更改则不需要传参即可,
3. 压缩方式:
压缩方式,若指定则可以单独设定,不指定则按创建zip文件时设定的进行
功能: 从zip压缩文件中解压缩所有的文件
格式: zipfile.extractall(指定输出路径)
功能: 从zip压缩文件中取出指定的文件
格式: zipfile.extract(指定文件,指定输出路径)
import zipfile
# 打开或者创建一个压缩文件
zp = zipfile.ZipFile('/Users/apple/desktop/01.zip','w',zipfile.ZIP_DEFLATED)
# 向创建好的压缩文件中添加要压缩的文件
zp.write('/Users/apple/desktop/01.txt)
zp.write('/Users/apple/desktop/test.py','hellotest.py')
# 关闭压缩文件
zp.close()
import zipfile
# 打开压缩文件
zp = zipfile.ZipFile('/Users/apple/desktop/01.zip','r')
# 将需要的指定文件或者全部文件解压缩出来
zp.extract('01.txt','/Users/apple/desktop/aa')
zp.extractall('/Users/apple/desktop/bbb')
# 关闭压缩文件
zp.close()
功能: 获取zip文件中的所有文件列表
格式: zipfile.namelist()
zp = zipfile.ZipFile('/Users/apple/desktop/01.zip','r')
print(zp.namelist())
zp.close()
功能: 获取zip文件中的所有信息列表
格式: zipfile.infolist()
zp = zipfile.ZipFile('/Users/apple/desktop/01.zip','r')
print(zp.infolist())
zp.close()
功能: 获取zip文件中指定文件的信息
格式: zipfile.getinfo(指定文件)
zp = zipfile.ZipFile('/Users/apple/desktop/01.zip','r')
print(zp.getinfo('test.txt'))
zp.close()
使用tar模块之前需要先导入模块
import tarfile
功能: 创建或者打开压缩文件
格式: tarfile.open(‘创建或者打开的压缩文件名’,’打开模式’)
注意: 打开模式中 使用w则默认不压缩 要压缩的话使用w:gz等压缩格式
功能: 向压缩文件中添加内容
格式: tarfile.add(‘添加到压缩文件中的文件或文件夹路径’,’可为空新名字’)
功能: 将压缩文件中的指定文件解压到指定路径
格式: tarfile.extract(‘指定路径’,’解压目标路径’)
功能: 将压缩文件中的所有文件解压到指定路径
格式: tarfile.extarctall(‘解压目标路径’)
import tarfile
tarfp = tarfile.open('/Users/apple/desktop/01.tar','w:gz')
tarfp.add('/Users/apple/desktop/01.py')
tarfp.add('/Users/apple/desktop/test/')
tarfp.close()
import tarfile
tarfp = tarfile.open('/Users/apple/desktop/01.tar','r')
tarfp.extract('01.py','/Users/apple/desktop/')
tarfp.extarctall('/Users/apple/desktop/a/')
tarfp.close()
使用日历模块之前需要先导入日历模块
import calendar
功能: 获取指定年份的日历字符串
格式: calendar.calendar(年份)
w表示 2个日期之间的间隔字符长度
l表示 lineheight 设置每行之间的高度 默认是1
c表示 两个月之间的间隔字符 默认是6
m表示一行显示几个月
import calendar
result = calendar.calendar(2017,w = 2,l = 1,c = 6,m = 4)
print(result)
功能: 获取指定年月的日历字符串
格式: calendar.month(年份,月份)
import calendar
result = calendar.month(2017,10)
print(result)
功能: 指定年份和月份获取一个时间矩阵列表
格式: calendar.monthcalendar(年份,月份)
import calendar
result = calendar.monthcalendar(2017,10)
print(result)
功能: 通过指定的年月,获取该月份第一天是周几,一共多少天
格式: calendar.monthrange(年份,月份)
import calendar
result = calendar.monthrange(2017,10)
print(result)
功能: 判断指定年份是不是闰年
格式: calendar.isleap(年份)
import calendar
result = calendar.isleap(2017)
print(result)
功能: 判断两个指定年份之间有多少个闰年
格式: calendar.leapdays(开始年份,结束年份)
import calendar
result = calendar.leapdays(2000,2011)
print(result)
功能: 通过指定年月日,计算这一天是周几
格式: calendar.weekday(年份,月份,日期)
注意: 0–6 表示 周一 — 周天
import calendar
result = calendar.weekday(2017,10,13)
print(result)
功能: 将时间元组转换成时间戳
格式: calendar.timegm(时间元组)
import calendar
ttp = (2018,1,1,0,0,0,0,0,0)
result = calendar.timegm(ttp)
print(result)
UTC时间又称为世界协调时间,特指格林尼治天文台所在的位置的时间,也叫格林尼治时间.
中国的时区是东八区,比世界协调时间快了8个小时
夏令时就是通过在夏季将时间人为调快1个小时.
ttp = (年,月,日,时,分,秒,周几,第几天,是否夏令时)
年 : 4位数字
月 : 1-12
日 : 1-31
时 : 0-23
分 : 0-59
秒 : 0-59
周几 : 0-6 对应 周一 - 周天
是否不是夏令时: 0是,其他不是
功能: 获取UTC和当前时区时间戳的差值 (UTC时间戳 - 当前时区时间戳)
import time
print(time.timezone)
功能: 在夏令时的情况下,获取UTC时间和当前时区的差值
import time
print(time.altzone)
功能: 检测是否是夏令时,0 就是 夏令时 非零不是夏令时
import time
print(time.daylight)
功能: 把时间元组转换成可读字符串
格式: time.asctime(时间元组)
import time
result = time.asctime((1992,2,1,21,33,44,0,0,0))
print(result)
功能: 获取当前的时间元组
格式一: time.localtime()
返回值: 当前的时间元组
格式二: time.localtime(时间戳)
返回值: 指定时间戳转换成本地时间元组
import time
result = time.localtime()
print(result)
result = time.localtime(1231424)
print(result)
功能: 获取当前UTC时间元组
格式一: time.gmtime()
返回值: 当前UTC时间元组
格式二