11.python-模块(包)与常用模块

模块module

  • 特点
    – 模块是一个包含python代码的文件(.py)
    – 拆分程序,方便编写维护
    – 增加复用
    – 当做命名空间使用,避免命名冲突
    – 可包含:函数(单一功能)、类、测试代码

  • 如何使用:
    – import module_name
    导入模块(调用需要前缀)
    module_name.function_name
    调用模块的函数
    module_name.class_name
    调用模块的类
    –import module_name as newname
    模块采用新代称
    –from module_name import func_name /class_name
    仅导入模块中的某函数某类(调用不需要模块名前缀 )
    –from module_name import *
    导入模块中所有内容(调用不需要模块名前缀)

  • if __ name __ == ‘__ main __’
    当前模块==直接执行的主进程(程序入口)
    –可以有效避免模块代码被导入时被动执行
    –所有程序的入口都以此代码开始

  • 模块的搜索路径和储存
    –import sys
    –sys.path 获取路径列表(list类型展现)
    –sys.path.append(dir)
    –模块的加载顺序:
    内存中已经加载好的模块
    python内置模块
    搜索sys.path路径


  • 包是一种组织管理模块的方式

  • 包:
    –__ init __ .py(包的标志文件)
    – 模块1(m01.py)
    –模块2(m02.py)
    –子包(__ init __ .py /子模块01/子模块02)

  • 包的导入与使用:
    –import package_name 直接导入一个包
    –package_n.module_n.func_name /class_name 调用包的函数(包含__ init __.py)
    –import package_n as new_name 起别名
    –from package_n.module_n import module_n01,02…导入包的模块(调用需要模块前缀)
    –from package_n import * 导入包中 __ init __ 中所有函数和类(调用不需要包名前缀)

  • __ all __ = [“module01”,“module02”,"module03…]在__ init __ 中则不再导入其中代码,而是导入 __ all __ 中的指定模块或包
    –包名作为变量前缀可以区分命名空间


常用模块

– calender / time / datetime
– timeit
– os
– shutil
– zip
– math
–random
– string


  • calender
    – calender.calender(年份,w=,l=,c=) 获取一年的日历
    – calender.isleap判断闰年
    – calender.leapdays(1992,2020)获取指定年份间闰年数
    – calender.monthrange获取这个月周几开始和总天数
    – calender.prcal(2020)直接打印日历
    – calender.prmonth(2020,4)打印月份
    –calender.weekday(2020,4,9)获取周几

  • time
    – 时间戳
    1.一个时间表示数,根据语言,整数或浮点数
    2.是从1970年1月1日0分0秒到现在经历的秒数
    3.不要太远也不要70年之前(32位支持到2038年)
    – UTC时间
    世界标准时间(中国是UTC+8)
    – 夏令时
    欧美国家夏季拨快一个小时
    – 时间元组
    一个包含时间内容的普通元组
属性
tm_year2020
tm_mon1 到 12
tm_mday1 到 31
tm_hour0 到 23
tm_min0 到 59
tm_sec0 到 61 (60或61 是闰秒)
tm_wday0到6 (0是周一)
tm_yday1 到 366(儒略历)
tm_isdst-1, 0, 1, -1是决定是否为夏令时的旗帜

– time.timezone 当前时区和UTC相差秒数 中国是-28800

– time.altzone在有夏令时情况下,当前时区与UTC相差秒数

– time.daylight当前是否是夏令时

– time.time

– time.localtime()得到当前时间结构,结构请看上表↑

– time.ascttime()时间结构转化字符串

– time.ctime()得到当前时间的字符串

import time

t1 = time.ctime()

t2 = time.localtime()

t3 = time.asctime(t)
print(t2)
#打印结果为 time.struct_time(tm_year=2020, tm_mon=4, tm_mday=9, tm_hour=20, tm_min=23, tm_sec=31, tm_wday=3, tm_yday=100, tm_isdst=0)

print(t1)
print(t3)
#打印结果为 Thu Apr  9 20:23:31 2020

– time.mktime()得到对应时间的时间戳

– time.perf_counter() 获取cpu时间,3.3版本之前是clock()

– time.sleep 使程序睡眠,n秒后继续

for i in range(10):
    print(i)
    time.sleep(1)#每次循环停1秒

– strfttime()将时间元组转化为自定义的字符串格式

格式命令
%a星期几的简写
%A星期几的全称
%b月分的简写
%B月份的全称
%c标准的日期的时间串
%C年份的后两位数字
%d十进制表示的每月的第几天
%D月/天/年
%e在两字符域中,十进制表示的每月的第几天
%F年-月-日
%g年份的后两位数字,使用基于周的年
%G年分,使用基于周的年
%h简写的月份名
%H24小时制的小时
%I12小时制的小时
%j十进制表示的每年的第几天
%m十进制表示的月份
%M十时制表示的分钟数
%n新行符
%p本地的AM或PM的等价显示
%r12小时的时间
%R显示小时和分钟:hh:mm
%S十进制的秒数
%t水平制表符
%T显示时分秒:hh:mm:ss
%u每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U第年的第几周,把星期日做为第一天(值从0到53)
%V每年的第几周,使用基于周的年
%w十进制表示的星期几(值从0到6,星期天为0)
%W每年的第几周,把星期一做为第一天(值从0到53)
%x标准的日期串
%X标准的时间串
%y不带世纪的十进制年份(值从0到99)
%Y带世纪部分的十进制年份
%Z时区名称,如果不能得到时区名称则返回空字符。
%%百分号
import time
t = time.localtime()
print (time.strftime("%Y-%m-%d %H:%M:%S", t))

  • datetime
    –datetime.date()提供一个日期,具有year,month,day属性
    – datetime.time()提供一个时间,具有hour,minute,sec,microsec等属性
    –datetime.timedelta提供一个时间差,时间长度
    –datetime.datetime类,包含以下函数:
    datetime.now()现在时刻
    datetime.today今天时间
    datetime.utcnow UTC时间
    datetime.fromtimestamp 时间戳返回本地
    datetime.timedelta 时间间隔
import datetime
t1 = datetime.datetime.now()
print (t1)#打印当前时间
t = datetime.timedelta(20)
print ((t + t1).strftime("%Y-%m-%d %H:%M:%S"))#打印20天以后的时间

  • timeit
    –timeit.timeit (stmt="[代码]",number=次数)用于测量运行一段代码多少次的耗时 stmt=函数/变量
import timeit
def a():
    return 1
t = timeit.timeit(stmt=a,number=200000000)
print(t)

  • os
    – 与系统相关的文件操作包含三个大的模块
    – os 操作系统目录相关
    – os.path 系统路径相关
    – shutil 高级文件操作(目录树,文件复制,删除,移动)

os.getcwd()获取当前工作路径
os.chdir()改变当前工作路径
os.listdir()获取目录中所有子目录和文件的列表
os.makedirs()递归方式创建文件夹
os.system(ls/touch XX)运行系统shell命令,或者用subprocess模块
os.getenv(“PATH”)获取指定系统环境变量

–os.path
os.path.abspath()路径转换绝对路径(linux 点好是当前目录,双点是父目录)
os.path.basename(路径)获取路径中文件名部分
os.path.join(a,b)将路径拼成一个
os.path.split(路径)输出两个值的元组 文件夹部分+文件名部分
os.path.isdir(路径)检查参数是否是目录
os.path.exists(路径/文件)检测文件或者目录是否存在


  • shutil

– shutil.copy(“原路径+文件名”,“目标路径+新文件名”)复制文件

– shutil.move("原路径“,”目标路径”)移动文件/文件夹

– shutil.make_archive(“归档目标的目录和文件名”,‘后缀’,‘需要归档的文件夹’)归档,也叫压缩

– shutil.unpack_archive(“压缩的地址”,“解压缩后的存放地址”)解压缩


  • zip file

– zipfile.zipfile(“路径”)创建一个zip对象

– zipfile.getinfo(name)获取zip文件信息

– zipfile.namelist()获取zip文档内所有文件名列表

– zipfile.extractall(“路径”)解压文档到当前路径


  • random

– random.random()生成一个0-1之间的小数

– random.choice(序列)随即返回序列中某个值

– random.shuffle(列表)随机打乱列表顺序,不能应用返回值

– random.randint(0,100)随机产生0-100一个整数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值