1.定义:
模块:用来从逻辑上组织python代码(变量、函数、类、逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)
包:用来从逻辑上组织模块,本质就是一个目录(必须带有一个_init_.py文件)
2.导入方法
import mudule_name
import module1_name,module2_name
from mudule_alex import *
from mudule_alex import m1,m2,m3
from module_alex import logger as logger_alex
3.import本质(路径搜索和搜索路径)
导入模块的本质就是把python文件解释一遍
#from module_alex import name
#name='alex'(执行)
#import module_alex------->module_name.py------->module_name.py的路径------>sys.path
#module_alex=all code module_alex.name module_alex.logger()(赋值)
导入包的本质就是执行该包下的_init_.py文件
4.导入优化
from module_test import test
5.模块的分类
a:标准库
b:开源模块
c:自定义模块
标准库:
1.time和datetime
import time
time.time()(获取时间戳)(不填写即为当前时间)
time.localtime()(本地时间元组形式(UTC+8时区))
运行结果:time.struct_time(tm_year=2017, tm_mon=7, tm_mday=12, tm_hour=17, tm_min=17, tm_sec=59, tm_wday=2, tm_yday=193, tm_isdst=0)
例如:x=time.localtime()
print(x.tm_year)(结果为2017)
dst(夏令时)
time.sleep(2)(睡两秒)
time.gmtime()(将时间戳转换成元组形式(标准时间UTC时区))
time.mktime()(将元组时间形式转换成时间戳)
time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())(格式化元组时间)
time.strptime('2017-02-21 21:25:25',"%Y-%m-%d %H:%M:%S")(struct_time)
time.asctime()(接受元组形式变量,转换成格式化时间)
time.ctime()(接受时间戳形式变量,转换成格式化时间)
import datetime
datetime.datetime.now()(获取当前时间)
datetime.datetime.now()+datetime.timedelta(3) (当前时间+3天)
datetime.datetime.now()+datetime.timedelta(-3) (当前时间-3天)
datetime.datetime.now()+datetime.timedelta(hours=3)(当前时间+3小时)
datetime.datetime.now()+datetime.timedelta(minutes=3)(当前时间+30分钟)
2.random模块
random.random()([0,1)之间的浮点数)
random.randint(1,3)(随机[1,3]之间的整数)
random.randrange(1,3)(随机[1,3)之间的整数)
random.choice('hello')(随机字符串中值,还可传入列表,元组)
random.simple('hello',2)(随机取两位)
random.uniform(1,3)(随机取[1,3)之间浮点数)
random.shuffle()(打乱顺序)
例如:a=[1,2,3,4,4,4]
random.shuttle(a)
print(a)(a中顺序打乱)
2.os模块(提供对操作系统调用的接口)
import os
os.getcwd() ------获得当前工作目录
os.getcwd("C:\\Users") -------改变当前工作目录
os.curdir() -----返回当前目录
os.padir() ------返回上级目录
os.makedirs(r"C:\a\b\c\d") ------创建递归目录
os.removedirs(r"C:\a\b\c\d") -------若目录为空,则删除,并递归到上一级目录,若也为空,则删除,以此类推
os.mkdir(r'D:\a') ------生成单级目录
os.rmdir(r'D:\a') ------删除单级空目录,若目录不为空则无法删除,报错
os.listdir(r'D:') ------列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() -----删除一个文件
os.rename() ------重命名文件/目录信息
os.stat(r'文件名') ------获取文件/目录信息
os.sep -------输出操作系统特定的路径分隔符,win下为“”\\“,linux下为“/”
os.linesep ------输出当前平台使用的行终止符,win下为“\r\n”,linux下为“\n”
os.pathsep ------输出用于分隔文件路径的字符串
os.name ------输出字符串指示当前使用平台,win->'nt',linux->'posix'
os.system("bash command") ------运行shell命令,直接显示
os.environ ------获取系统环境变量
os.path.abspath(path) ------返回path规范化的绝对路径
os.path.split(path) ------将path分割成目录和文件名二元组返回
os.path.dirname(path) ------返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) ------返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。
os.path.exits(path) ------如果path存在,返回True,不存在返回false
os.path.isabs(path) ------如果path是绝对路径,返回True
os.path.isfile(path) -----如果path是一个存在的文件,返回True,否则返回false
os.path.isdir(path) ------如果path是一个存在的目录,返回True,否则返回false
os.path.join() -------将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) -----返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) ------返回path所指向的文件或者目录的最后修改时间
4.sys模块
sys.argv ------,命令行参数List,第一个元素是程序本身路径
sys.exit(n) ------退出程序,正常退出时exit(0)
sys.version ------获取Python解释器的版本信息
sys.maxint ------最大的Int值
sys.path ------返回模块的搜索路径,初始化时使用pythonpath环境变量的值
sys.platform ------返回操作系统平台名称
val=sys.stin,readline()[:-1]
5.shutil模块
shutil.copyfileobj(fsrc,fdst[length]) ------将文件内容拷贝到另一个文件中,可以部分内容
shutil.copyfile(src,dst) -------拷贝文件
shutli.copymode(src,dst) -------仅拷贝权限,内容、组、用户均不变
shutil.copystat(src,dst) ------拷贝状态的信息,包括:mode bits,atime,mtime,flags
shutil.copy(src,dst) ------拷贝文件和权限
shutil.copy2(src,dst) ------拷贝文件和状态信息
shutil.ignore_patterns(*patterns)
shutil.copytree(src,dst,symlinks=False,ignore=None) -------递归的去拷贝文件
shutil.rmtree(path,[ignore_errors[onerror]]) -------递归的去删除文件
shutil.move(src,dst) -------递归的去移动文件
shutil.make_archive(base_name,format,...) ------创建压缩包并返回文件路径,例如:zip、tar
6.json&pickle模块
json:用于字符串和python数据类型间进行转换(四个功能:dump、dumps、loads、load)
pickle:用于ptyhon特有的类型和python的数据类型间进行转换(四个功能:dump、dumps、loads、load)
7.shelve模块
shelve莫夸是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
8.xml处理模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单。
9.PyYmal模块
python也可以很容易处于ymal文档格式
10.hashilib模块
用于加密相关的操作,3.x中代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法
11.re模块
常用正则表达式符号(match,search,findall,splitall,sub)
import re
re.match("^chen","chenronghua123")
re.search("R.+","chen321ronghua123")
re.sub("[0,9]+","|","abc12de3f45gh",count=2) (将数字全部替换为|)