一、常用模块

1.math数学模块

在计算机中,所有数值在计算机底层都是约等于机制,并不是精确地
import math #ceil() 向上取整操作
math.ceil(3.1)=>4
#floor() 向下取整操作
math.floor(3.9)=>3
#pow() 计算一个数值的n次方(结果为浮点型)
#sqrt() 开平方(结果浮点型)
#fabs() 计算绝对值(浮点型)
#modf() 数值拆分成整数和小数两部分组成元组
math.modf(-19.8)=>(-0.8000000000000007,-19.0)
#copysign() 将参数第二个数值的正负号拷贝给第一个
math.copysign(-90,-18)=>-90
#fsum() 将一个容器数据中的数据进行求个运算(浮点数)(对比内置sum函数)
#圆周率常数 pi
math.pi=>3.1415926≈3.1415927

2.随机模块

chr() 给ascii码返回对应的字符串

import random
#random() 随机0-1之间的小数(左闭右开)0<=x<1
random.random()
#randrage() 获取指定范围内的整数(包含开始值,不包含结束值,间隔值)同range()
random.rangrage(3,10,2)
#randint() 获取指定范围内的整数(可以去到最大值)
#uniform() 获取指定范围的随机小数(左闭右开)
#choice() 随机获取序列中的值(多选一)
#sample() 随机获取序列中的值(多选多)
#shuffle() 随机打乱序列中的值(直接打乱原序列)

3.内置函数

#abs()      绝对值函数
#round() 四舍五入(n.5 n为偶数则舍去 n.5 n为奇数,则进一)
# 奇进偶不进
val = 3.5 =>4
val = 4.5 =>4
var = 4.51 =>5
#sum 求和
#max 求最大值
#min 求最小值
lst = [("a",25),("b",18),("c",27)]
#求最小元组
def func(n):
return n[-1]#返回值是判断参考的依据
res = min(lst,key=func)
res=>("b",18) #pow 求x次方
pow(n,x,y)#求n的x次方 对y值取余
#range 产生指定范围数据的可迭代对象
#bin 将10进制数据转换成二进制
#oct 将10进制转换成八进制
01234567 8=>7+1=>0o10
#hex 将10进制转换成16进制
16 => 15+1 =>0x10
#chr ASCII编码转换成字符
(大小写字符相差32位,大写A=65 小写a=97)
#ord 将字符转换成ASCII
#金针使用eval 和exec 尤其是在和用户交互数据时候主义
#eval 将字符串当作python代码执行
#exec 将字符串当作python代码执行(功能更强)
strvar = """
for i in range(10):
print(i)
"""
exec(strvar)
#repr 不转义字符输出字符串(同r"ada")
#input 接收输入字符串
#hash 生成哈希值(number 字符串 tuple)
#hash生成哈希值作用:
1.密码加密:hashlib
2.文件比较 比较文件内容

4.序列化模块-pickle

序列化:把不能够存储在文件中的数据变的可存储,这个过程就是序列化
反序列化:把文件中的数据内容拿出来,恢复成原来的数据类型,这个过程叫反序列化
在文件中存储的数据,要吗是字符串,要吗是字节流
python中,所有数据类型都可以通过dumps和loads进行序列化 lst = [1,2,3] import pickle #dumps 把任意对象序列化成bytes
res = pickle.dumps(lst)
#loads 把任意bytes反序列化成原来数据
lst = pickle.loads(res) #dump 把对象序列化后写入file-like Object(既文件对象)
lst = [1,2,3]
with open("ceshi.txt",mode="wb") as fp:
pickle.dump(dic,fp)
#load 把file-like Object(既文件对象)反序列化后写入对象
with open("ceshi.txt",mode="wb") as fp:
res = pickle.load(fp)
print(res,type(res))

5.json模块

能够通过json序列化字符串的有如下类型:int float boo str list tuple dict None

# 1.json用法
import json
dic = {"name":"guo","age":30,"classroom":"python30"}
(1) dumps loads是一对
res = json.dumps(dic,ensure_ascii=false,sort_keys=true)
print(res,type(res)) #反序列化
dic = json.loads(res)
print(dic,type(dic)) (2)dump load,针对文件进行序列化操作
#dump序列化
with open("ceshi.txt",mode="w",encoding="utf-8") as fp:
json.dump(dic,fp,ensure_ascii=false)
#load反序列化
with open("ceshi.txt",mode="r",encoding="utf-8") as fp:
dic = json.load(fp)
print(dic,type(dic))

6.json pickle 区别

  1. json 可以连续dump,不可以连续load(load是一次性拿出所有数据进行反序列化,容易出错)
dic1 = {"name":"guo","age":30,"classroom":"python30"}
dic2 = {"name":"guo1","age":25,"classroom":"python31"}
with open("ceshi.txt",mode="w",encoding="utf-8") as fp:
json.dump(dic1,fp,ensure_ascii=false)
fp.write("\n")
json.dump(dic1,fp,ensure_ascii=false)
fp.write("\n")
#load反序列化
with open("ceshi.txt",mode="r",encoding="utf-8") as fp:
dic = json.load(fp)#报错
print(dic,type(dic)) #解决方式,使用loads。一行一行反序列化
with open("ceshi.txt",mode="r",encoding="utf-8") as fp:
#文件对象是迭代器。一次迭代一行
for i in fp:
dic = json.load(i)
print(dic,type(dic))
  1. pickle可以连续dump,可以连续load
dump进文件时,默认在最后加结束符
import pickle dic1 = {"name":"guo","age":30,"classroom":"python30"}
dic2 = {"name":"guo1","age":25,"classroom":"python31"}
with open("ceshi.txt",mode="wb",encoding="utf-8") as fp:
pickle.dump(dic1,fp)
pickle.dump(dic1,fp) #load反序列化
#方法一
with open("ceshi.txt",mode="rb",encoding="utf-8") as fp:
dic3 = pickle.load(fp)
print(dic3,type(dic3))=>dic1
dic4 = pickle.load(fp)
print(dic4,type(dic4))=>dic2 #方法二(一次性把文件中的数据都拿出来)
try:
with open("ceshi.txt",mode="rb",encoding="utf-8") as fp:
while true:
dic = pickle.load(fp)
print(dic,type(dic))
except:
pass

3.json序列化后的数据类型是str,所有编程语言都识别(int float bool str list tuple dict

None)json不能连续load,只能次异性拿出所有数据

4.pickle序列化之后的数据类型是bytes,所有数据类型都可转换,仅限于python之间的存储传输,pickle可以连续load,多套数据放到同一个文件中

7.time模块

时间戳
UTC时间
夏令时
#时间元组:
(年月日时分秒(0-59),周几(0-6),一年中的第几天,是否夏令时(0,1))
(tm_year,tm_month,tm)
#格式化时间字符串 import time #sleep() 程序睡眠等待(程序等待)******
#time() 获取当前的时间戳*******
#ctime() 获取本地时间字符串(参数是时间戳,默认当前)******
#localtime() 获取本地时间元组(参数是时间戳,默认当前)*****
#mktime() 通过时间元组获取时间戳(参数是时间元组)*****
#asctime() 通过时间元组获取时间字符串(参数是时间元组)(了解)
#strftime() 格式化时间字符串(格式化字符串,时间元组)
#strptime() 将时间字符串通过制定格式提取到时间元组中(时间字符串,格式化字符串)
#perf_counter() 用于计算程序运行的时间

日历模块

8.os shutil模块(系统命令)

对系统进行操作
import os
#system() 在python中执行系统命令
os.system("calc") //计算器
os.system("ipconfig") //gbk格式,出现乱码
#popen() 执行系统系统命令返回对象,通过read方法读取出字符串
obg = os.popen("ipconfig") //
#windows默认gbk编码,通过read方法可以直接转换成utf-8编码集
onj.read()
#listdir() 获取指定文件夹所有内容的名称列表
# 路径:相对路径 ,绝对路径
# . 代表当前目录 ..代表上一级目录 res = os.listdir()=》["a.txt","b,txt","day1"] #getcwd() 获取当前文件所在的默认路径
#chdir() 修改当前文件工作的默认路径
#environ() 获取和修改环境变量
os.environ()
#将路径添加到环境变量中,再执行命令时,通过路径去找对用的路径,进行执行
os.environ["Path"] +=r"d:\qq\bin;"
#--os模块属性
#--name 获取系统标识 linux,max->osix windows->nt
#--sep 获取路径分割符号 linux,mac->/ window->\
#--linesep 获取系统的换行符号 linux,mac->\n window->\rrn or \n

os shutil模块

os 创建和删除 文件和文件夹

shutil 复制和剪切 文件和文件夹

#--os
#os.mknod 创建文件(linux可以,windows有兼容)
#os.remove 删除文件
#os.mkdir 创建目录
#os.rmdik 删除目录
#os.rename 重命名文件
os.rename("原","重命名")
#os.makedirs 递归创建文件夹
os.makedirs("a/b/c/d")
#os.removedirs 递归删除文件夹
os.removedirs("a/b/c/d") #--shutil模块
import shutil #shutil.copy(src,dst) 复制文件权限和内容
#shutil.copytree(src,dst) 拷贝文件夹里边的所有内容(递归拷贝)
#rmtree(path) 删除当前文件夹及其中所有内容(递归删除)
#move(path1,path2) 移动文件和文件夹

os.path路径模块

import os

pathvar = r"e:\day\abc.py"
#basename() 返回文件名部分 *****
os.path.basename(pathvar)
#dirname() 返回路径部分 *****
#split() 将路径拆分成单独的文件部分和路径部分,组合成一个元组 *****
#join() 多个路径和文件组成新的路径,可以自动通过不同的系统加不同的斜杠 *****
#splitext() 讲路径分割为后缀和其他部分 *****
#getsize() 获取文件的大小 *****
#isdir() 是否是文件夹 *****
#isfile() 是否是文件 *****
#islink() 监测路径数是否一个链接 ***** ***记忆
#getctime() windows文件的创建时间,linux权限的改动时间
#getmtime() 文件最后一次修改时间(返回时间戳)
#getatime() 获取文件最后一次访问时间(返回时间戳)
#exists() 监测指定的路径是否存在 *****
#isads() 监测指定的路径是否绝对路径
#abspath() 将相对路径转换成绝对路径

9.zifilep、tarfile压缩模块

zip

import zipfile

1.压缩文件
a.创建压缩包
zf = zipfile.ZipFile("ceshi.zip","w",ZIP_DEFLATED)
b.写入
#write(“路径”,别名)
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片")
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片1")
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","临时文件夹\旧照片1")
c.关闭压缩文件
2.解压文件
zf = zipfile.ZipFile("ceshi.zip","r")
zf.extractail("./ceshi1")//解压所有
zf.extract("1.txt","./ceshi2")#解压单个
zf.close()
3.追加文件
zf = zipfile.ZipFile("ceshi.zip","a",ZIP_DEFLATED)
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片3")
zf.close() with zipfile.ZipFile("ceshi.zip","a",ZIP_DEFLATED) as zf:
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片3") 4.查看文件 with zipfile.ZipFile("ceshi.zip","r",ZIP_DEFLATED) as zf:
lst = zf.namelist()

tar(.tar | .tar.gz | .tra.bz2)

官方说法:tra.bz2的压缩算法,爆的大小最小

import tarfile

1.创建tar压缩包
#--tar
tf = tarfile.open("ceshir1.tar","w",encoding="utf-8")
#add(路径,别名)
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片1")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","临时文件夹\旧照片1")
tf.close() #--tra.gz
tf = tarfile.open("ceshir1.tar.gz","w:gz",encoding="utf-8")
#add(路径,别名)
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片1")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","临时文件夹\旧照片1")
tf.close() #--tra.bz2
tf = tarfile.open("ceshir1.tar.bz2","w:bz2",encoding="utf-8")
#add(路径,别名)
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片1")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","临时文件夹\旧照片1")
tf.close()
2.解压文件
tf = tarfile.open("ceshir1.tar","r")
tf.extractail("./ceshi1")//解压所有
tf.extract("1.txt","./ceshi2")#解压单个
tf.close()
3.追加文件
# 只能对w模式下的打包进行追加,其他模式不行,无法对已经压缩好的文件无法追加
with tarfile.open("ceshir1.tar","a") as tf:
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片15")
#对tar.gz or tar.bz2已经压缩过的包无法追加文件
with tarfile.open("ceshir1.tar.gz","a") as tf:
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片15") 4.查看文件
with tarfile.open("ceshir1.tar","r",encoding="utf-8") as tf:
lst = tf.getnames() ##--解决tarfile 不能追加文件的bug,进行优化
tarfile的解决方法
1.先解压原来的压缩包
import os
pathvar = os.getcwd()
//压缩包的路径
pathvar1 = os.path.join(pathvar,"ceshir1.tar.bz2")
//解压文件夹的路径
pathvar2 = os.path.join(pathvar,"ceshir1")
//解压压缩包
with tarfile.open(pathvar1,"r",coding="utf-8") as tf:
tf.extractall(pathvar2)
2.把要追加的内容追加进去
import shutil
shutil.copy(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果\a.png",pathvar2)
3.过滤数据,重新打包
lst = os.listdir(pathvar2)
with tarfile.open(pathvar1,"w:bz2",encoding="utf-8") as tf:
for i in lst:
pathnew = os.path.join(pathvar2,i)
if i!="222":
tf.add(pathnew,i)

二、模块与包

文件就是一个模块,文件夹就是一个包

1、导入模块

使用import 导入 使用 as 取别名

1.模块.变量

2.模块.函数

3.模块.类

# 导入任意路径下的模块
#通过sys.path可以导入任意路径下的模块
import sys
print(sys.path)
sys.path.apped(r"e:\abc")

** from ... import...**

from mymodule  import a
from mymodule import a,b,c
from mymodule import *
# 起别名
from mymodule import a as aa,b,c
# 定制的*的范围
__all__ = ""//可以被*调用的 # __name__(返回模块名称的魔术属性)
# 如果当前模块是直接运行的返回 __main__
# 如果是被导入运行的,返回模块名
# 可以用来做测试
# 防止当作为模块导入时,下面的代码被执行,下面代码是做测试,不需要导入
if __name__ == "__main__" :
code块

2.导入包

__init__.py 对包进行初始化的脚本文件
导入包,系统自动调用_init_文件,当前文件夹初始化,实际上是是对init中的文件属性进行导入 init:
ceshi1=1
ceshi2=2 # 1.导入包,通过init文件初始化,默认引入init文件中所有属性
import package1
# 2.引入包中具体一个模块:包名.模块.成员
#方法一
import package1.mypath
package1.mypath.join()
import package1.mypath as pm
pm.join()
#方法二
import package1
package1.mypath.join()//报错,因为没有引入mypath模块
在init中引入mypath模块
init:
from package1 import mypath
package1.mypath.join() # 3.用from ... import... 导入包
from package1 import mypath
mypath.func()
from package1.mypath import func
func()

3.单入口模式(相对路径导入)

# 当前文件如果含有相对路径,是不能够直接执行的
# 通过导入到入口的启动文件中,在这个主文件中,能够识别到对应的相对路径
# from ... import 落脚点在于引入的模块或者模块中的成员 # .代表当前层级 ..代表上一级

三、python学习-常用模块的更多相关文章

  1. python学习——常用模块

    在学习常用模块时我们应该知道模块和包是什么,关于模块和包会单独写一篇随笔,下面先来了解有关在python中的几个常用模块. 一.什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文 ...

  2. Python学习--Selenium模块学习(2)

    Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径2. 通过 `$PATH`环境变量找寻浏览器驱动 可参考Python学习--Selenium模块简单介绍(1) 控制 ...

  3. python的常用模块之collections模块

    python的常用模块之collections模块 python全栈开发,模块,collections 认识模块 什么是模块?    常见的场景:一个模块就是一个包含了python定义和声明的文件,文 ...

  4. Python学习--Selenium模块

    1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台

  5. Python学习---重点模块的学习【all】

    time     [时间模块] import time # print(help(time)) # time模块的帮助 print(time.time()) # 时间戳 print(time.cloc ...

  6. Python学习——python的常用模块

    模块:用一堆代码实现了某个功能的代码集合,模块是不带 .py 扩展的另外一个 Python 文件的文件名. 一.time & datetime模块 import time import dat ...

  7. python(五)常用模块学习

    版权声明:本文为原创文章,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. https://blog.csdn.net/fgf00/article/details/52357 ...

  8. Python学习【第6篇】:Python之常用模块1

    常用模块一. collocations 模块 时间模块 random模块 os模块 sys模块 序列化模块 re模块 常用模块二:这些模块和面向对象有关 hashlib模块 configparse模块 ...

  9. Python之常用模块学习(二)

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

随机推荐

  1. Differences between Stack and Heap

    本文转载自Differences between Stack and Heap Stack vs Heap So far we have seen how to declare basic type ...

  2. 代码生成器 springboot架构

    import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.IdType; ...

  3. oracle 中的左外连接、右外连接、全连接

    左外连接 左外连接 全连接1.左外连接:表1 left [outer] join 表1 on 条件 在等值连接的基础上会把表1中的其他内容也展示出来 而表2只会显示符合条件的内容 . outer 可省 ...

  4. python进阶(4)文件操作

    文件操作 文件操作主要包括对文件内容的读写操作,这些操作是通过文件对象实现的,通过文件对象可以读写文本文件和二进制文件 open(file, mode='r', buffering=-1, encod ...

  5. 使用sun.net.ftp.FtpClient进行上传功能开发,在jdk1.7上不适用问题的解决

    问题如下图片: 之前项目上开发了一个上传文件的功能,使用的是sun.net.ftp.FtpClient这个类 连接服务器的代码大概如下: public static FtpClient ftpClie ...

  6. oracle ORA-00257

    su - oracle sqlplus /nolog conn / as sysdba select * from v$flash_recovery_area_usage; select sum(pe ...

  7. Prometheus+Grafana+Alertmanager搭建全方位的监控告警系统

    prometheus安装和配置 prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据. 2.Client Library: 客户端库,检测应用程序代码,当 ...

  8. docker mysql初始化多个sql脚本

    一.概述 现有一台服务器,需要部署mysql.其中mysql容器,需要在第一次启动时,执行多个sql文件. 文件名 说明 执行顺序 init.sql 创建数据库以及用户 1 users.sql 用户表 ...

  9. .NET CORE 3.1 MVC Log4net

    1 引用包:Microsoft.Extensions.Logging.Log4Net.AspNetCore   2 ILoggerFactory loggerFactory 注册 public voi ...

  10. 如何自学成 Python 大神?这里有些建议

    人生苦短,我用 Python.为什么?简单明了的理由当然是开发效率高.但是学习 Python 的初学者往往会面临以下残酷的现状:网上充斥着大量的学习资源.书籍.视频教程和博客,但是大部分都是讲解基础知 ...