文章目录
一、pip的使用
plp是一个现代的,通用的Python包管理工具。提供了对Python包的查找、下载、安装、卸载的功能,便于我们对Python的资源包进行管理。
1.1、安装及配置
win+r 打开cmd
在安装Python时,会自动下载并且安装pip。
pip -V //pip 20.2.1
exit() //cmd退出python环境
pip install
pip uninstall
pip list //显示已经安装的包
pip freeze //显示已经安装的包,并且以指定的格式显示
注:建议安装包的路径:D:\download_install\python\Scripts
pip install ipython
pip install --upgrade pip //安装pip22.1.1
pip -V
Traceback (most recent call last): //碰见这种情况,
解决:d:\download_install\python\lib\site-packages\pip下的~ip换成pip
1.2、修改pip下载源
pip install 包名 -i 国内源地址
pip install ipython -i https://pypi.mirrors.ustc.edu.cn/simple/
就是从中国科技大学(ustc)的服务器上下载requests(基于python的第三方web框架)
国内常用的pip下载源列表:
http:/mirrors.alyun.com/pypi/simple/ //阿里云
https://pypi.mirrors.ustc.edu.cn/simple/ //中国科技大学
http://oypi.douban.com/simple/ //豆瓣douban
https://pypi.tuna.tsinghua.edu.cn/simple/ //清华大学
http:/pypumirrors.ustc.edu.cn/simple/ //中国科学技术大学
运行方式:
①原始终端
cmd
②使用ipython
pip install ipython -i https://pypi.douban.com/simple
③修改下载源为清华
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
一般情况下需要安装的东西
pip install APScheduler
pip install Flask
pip install Flask-SQLAlchemy
pip install greenlet
pip install numpy
pip install pandas
pip install paramiko
pip install PyMySQL
pip install SQLAlchemy
pip install scapy
pip install Werkzeug
pip install xmltodict
pip install autopep8
pip install SimpleWebSocketServer
pip install comtypes
pip install matplot
pip install mysql-connector
pip install flake8
pip install xlrd
pip install openpyxl
pip install pyyaml
pip install nacos-sdk-python
pip install flask-cors
第二章、语法基础
2.1、数据类型及类型转换
数据才有类型,变量没有类型,使用type可以查看变量存储的数据类型
容器分类:
序列式容器:字符串、列表、元组
非序列是容器:字典、集合
1)数据类型
①Number(数字)
int(有符号整型)、long(长整型)、float(浮点型)、complex(复数)
②布尔类型bool
True、false
③String(字符串)
常见操作
获取长度len | 获取字符串长度 | len(str) |
---|---|---|
查找内容find | 找指定内容是否存在,存在:返回第一次索引位置;不存在:返回-1 | str.find(‘e’) |
判断startswith、endswith | 判断字符串以谁开头/结尾 | str.startswith(‘w’);str.endswith(‘3’) |
计算出现次数:count | 返回在start与end之间在mystr出现的次数 | str.count(‘w’) |
替换内容:replace | 替换指定内容 | str.replace(‘w’,‘0’) |
切割字符串:split | 切割 | str.split(‘#’) |
修改大小写:upper、lower | 字符串大小写互改 | str.upper()、str.lower() |
空格处理:strip | 默认去除两侧空格 | len(s1.strip()) |
字符串拼接:join | 字符串拼接 | s1.join(str) |
④List(列表)
列表支持:位置删除(尾部、指定位置删除)、值删除
尾部效率高,不需要移动元素,尾删尾插
缺点:根据关键字查找效率低
优点:根据索引位置查找效率高
list.sort() 排序
增加 | append | 在末尾增加元素 | list.append(‘w’) |
---|---|---|---|
insert | 在指定位置插入元素 | list.insert(3,‘o’) | |
extend | 合并两个列表 | list.extend(li1) | |
删除 | pop | 删除最后一个 | list.pop() |
remove | 根据元素的值进行删除 | list.remove(‘w’) | |
del | 根据下标进行删除 | del list[1] | |
修改 | 给要修改的列表下标赋值 | list[0] = ‘a’ | |
查 | in | in:存在true;不存在false | if shuru in list: |
not in | not in:不存在true;存在false | if shuru not in list: |
⑤Tuple(元组)
元组与列表类似,元组元素不能修改,元组使用(),列表使用[ ]
元组不支持修改,支持遍历、查找操作
元组比列表更节省空间
元组是序列容器,支持索引、切片
查 | index下标索引 | tuple1[0] |
---|---|---|
count | ||
遍历 | while、for |
注:
t1 = (3,) //<class 'tuple'> //元组中只有一个元素时,要在尾部添加一个逗号,不然类型就是列表
t = (1) //<class 'int'>
⑥Dictionary(字典dict)
字典是非序列容器,字典用键值对key=>value存储,键是唯一的,值可以重复
字典查找效率高,但是比较占内存,字典以时间换空间
增加 | 变量名[‘键’] = 数据 | dict1[‘height’] = [12,23] |
---|---|---|
删除 | del 删除指定元素 | del dict1[‘age’] |
clear() | ||
修改 | 通过key查找,进行修改 | dict1[‘name’] = ‘eeee’ |
查 | 使用key查找 | dict1[‘name’] |
get获取 | dict1.get(‘name’) |
获取不存在的key会报错
字典的4种遍历方法
for key in person.keys(): #字典.key()获取字典的所有key
print(key)
for value in person.values(): #字典.values()获取字典的所有的value
print(value)
for key,value in person.items():
print(key,value)
for item in person.items(): #遍历字典的项/元素
print(item)
2)类型转换
int(x) | 将x转换为一个整数 |
---|---|
float(x) | 将x对转换为一个际点数 |
str(x) | 将对象X转换为字符串 |
bool(x) | 将对象x转换成为布尔值 |
注:
①123.456和12ab 字符串,都包含非法字符,不能被转换成为整数,会报错
print(int(“123,456"))
print(int(“12ab"))
2.2、运算符
1)算数运算符
-
-
- / // % ** ()
-
2)赋值运算符
=
b = a = 10 //可连续赋值
f,g,h = 1,2,3 //连续给多个变量赋值
3)复合赋值运算符
+= -= *= /= //= %= **=
4)比较运算符
== != > >= < <=
5)逻辑运算符
and or not
2.3、输入输出
input()
print()
2.4、流程控制语句
if、if else、elif、for、range
a = 4
if a > 5:
print('a大于5')
else:
print('a小于5')
#elif
socle = int(input('输入成绩'))
if socle >= 90:
print('优秀')
elif 80< socle <90:
print('中等')
elif 60 < socle < 80:
print('一般')
elif socle <= 60:
print('不合格')
#for
s = 'china'
for i in s:
print(i)
for j in range(6): #range(6)表示0-5;range(2,12,4)表示每次循环加42,6,10
print(j)
2.5、切片
切片是指对操作的对象载取其中一部份的操作。字符率、列表、元组都支持切片操作。
切片的语法:[起始结束:步长],也可以简化使用[起始结束注意:选取的区间从”起始“位开始,结束位的前一位结束(不包含结束位本身),步长表示选取间隔。
str[3:7] //str= '01234567' 结果3456 起始开始,不包含结束
str[3:7:2] //结果34 从索引3开始切两个字符
str[3:] //结果34567 从索引3开始的后面所有
str[:3] //结果012 开始到索引3
2.6、函数
c = 33
def sum(a,b):
return a * 2 + b +c
print(sum(1,3))
第三章、文件
3.1、文件的打开与关闭
open(文件路径,模式) w可写r可读
绝对路径:
fp = open('2.txt','w') #open(文件路径,模式) w可写r可读 创建了一个2.txt文件
fp.write('我是python创建的文件2.txt,想说hello')
fp.close() //关闭文件
#open方法默认使用gbk编码,要保存汉字需要设置编码格式为'utf-8'
fp = open('douban.json','w',encoding='utf-8')
fp.write(content)
#简便写法
with open('doub.json'),'w',encoding='utf-8') as fp:
fp.write(content)
3.2、文件的读写
fp = open('test/2.txt','r')
content = fp.read() #读文件内容read一个字节一个字节读
content = fp.readline() #一行一行读,但只能读一行
content = fp.readlines() #按行读取,读取所有数据,以列表形式返回,列表元素,是一行一行的数据
print(content)
3.3、序列化与反序列化
文件操作,把字符串写入本地文件
而对象(列表、字典、元祖)必须进行序列化,才能写入到文件
因此,对象–>字节序列(序列化) 字节序列—>对象(反序列化)
Python中的JSON模块实现数据的序列化和反序列化。
序列化的2种方式dumps()和dump()
import json
name_list = ['www','dddd']
xl = json.dumps(name_list) //dumps先序列化
fp.write(xl)
json.dump(name_list,fp) //dump会直接把对象序列化并写入fp
fp.close()
反序列化的2种方法load、loads
fp = open('2.txt','r') //
content = fp.read()
json.loads(content)
json.load(fp) //上面两步合成一步
访问模式
r | 以只读方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,则报错。这是默认模式。 |
---|---|
w | 打开一个文件只用于写入。如果该文件已存在则将其秘盖。如果该文件不存在,创建新文件。 |
a | 追加模式。如果该文件已存在,新内容追加在已有内容之后;文件不存在,创建新文件并写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其戳盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。如果该 文件不存在,创建新文件用于读写。 |
3.4、读取文件的异常处理
try:
fp = open('tt.ext', 'r')
fp.read()
except FileNotFoundError:
print('文件不存在,系统在升级')