模块

模块基础

  • 模块是一系列功能的集合体
  • 模块分为四种
    1. 一个py文件就可以是一个模块
    2. 包:一个存放有__init__.py文件的文件夹
    3. 使用c编写并链接到Python解释器的内置模块
    4. 已被编译为共享的或DLL的C或C++扩展
  • 模块的三种来源
    • Python解释器自带的,内置库,标准库
    • 第三方库
    • 自定义库
  • 使用库的优点
    • 拿来主义,极大的提高的开发效率
    • 解决代码冗余问题
  • 首次导入模块发生的三件事
    1. 触发spam.py的运行,产生一个模块的命名空间
    2. 运行spam.py的代码,将运行过程中产生的名字都丢到模块的命名空间中
    3. 在当前执行文件的名称空间中拿到一个名字spam,改名字就是指向模块的名称空间的,后续的导入直接引用首次导入的成果
  • 模块的导入
    • import 语句
    • from import 语句
    • as 起别名
  • 循环导入问题
    • 循环导入问题是指在一个模块加载/导入的过程中导入另一个模块,而在另一个模块中又返回导入类第一个模块,由于第一个模块尚未加载完毕,从而导致引用失败
    • 解决方法一:导入语句放到最后,保证在导入时,所有名字都已经加载过
    • 解决方法二:导入语句放到函数中,只有在调用函数时,函数才会执行其内部代码
  • 模块的搜索路径顺序
    1. 内存
    2. 内置
    3. sys.path:强调 sys.path是以执行程序为准的
  • py文件的两种用途
    1. 脚本
    2. 模块

  • 包就是一个包含有_init_.py文件的文件夹,创建包的目地是为了用文件夹将文件/模块组织起来
  • 包只是模块的一种形式,本质就是一种模块

软件开发目录规范

  • 为了提高程序的可读性和可维护性,我们应该为软件设计良好的目录结构,软件目录结构无硬性要求,只要清晰可读即可
  • 如下结构:
    • bin:执行文件,入口文件
    • core:存放业务逻辑代码
    • api:存放接口文件,接口主要用于为业务逻辑提供数据操作
    • db:存放操作数据库相关的文件,主要用于与数据库交互
    • lib:存放程序中常用的自定义模块
    • conf:存放配置文件
    • log:存放日志文件
    • run.py: 程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所在的文件夹作为sys.path的第一个路径,这样就省去了处理环境变量的步骤
    • setup.py: 安装、部署、打包的脚本。
    • README: 项目说明文件。

常用模块

1-time模块

import time

  • 时间戳:时间戳表示的是从1970年1月1日08:00:00开始按秒计算的偏移量

    time_stamp = time.time()
    print(time_stamp, type(time_stamp))
    # 1620912034.4001145 <class 'float'>
    
  • 格式化的字符:strftime('%Y-%m-%d %H:%M:%S %p') 根据设置的格式输出时间,返回字符串

    format_time = time.strftime('%Y-%m-%d %H:%M:%S %p')
    print(format_time, type(format_time))
    # 2021-05-13 21:20:12 PM <class 'str'>
    
  • 结构化的时间对象:localtime() 返回一个元组,一共有9个元素:年 月 日 时 分 秒 一周的第几日(0是周一) 一年的第几日 夏令时

    print(format(time.localtime()))
    #time.struct_time(tm_year=2021, tm_mon=5, tm_mday=13, tm_hour=21, tm_min=19, tm_sec=20, tm_wday=3, tm_yday=133, tm_isdst=0)
    
    
  • 三者的转换

                 strptinr->               mktime->
    格式化字符串----------------结构化的时间------------------时间戳
                 <-strftime            <-lovaltimr/gmtime
    

2-datetime模块

import datetime

print(datetime.datetime.now())  # 获取当前具体时间,年月日时分秒毫秒
print(datetime.datetime.now() + datetime.timedelta(hours=3))  # 加上三小时
print(datetime.datetime.now() + datetime.timedelta(hours=-3))  # 加上负的三小时,也就是减去三小时
print(datetime.datetime.now() - datetime.timedelta(hours=3))  # 减去三小时
res = datetime.datetime.now()
print(res.date())  # 获取日期
print(res.strftime('%H:%M:%S'))  # 获取时间
print(res.replace(hour=10))  # 将小时替换成10时

3-random模块

import random

random.random()  # 大于0小于1的小数
random.randint(1, 3)  # 大于等于1小于等于3的整数
random.randrange(1, 3)  # 大于等于1小于3的整数
random.choice([])  # 列表内随机一个元素
random.sample([], 1)  # 列表内随机1个元素,组成元组
random.uniform(1, 3)  # 大于1小于3的小数

# 随机生成验证码
def make_code(size=6):
    res = ''
    for i in range(size):
        num = str(random.randint(0, 9))
        alpha = chr(random.randint(65, 90))
        res += random.choice([num, alpha])
    return res

4-os模块

os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口,多用于文件处理。

方法 详解
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir(“dirname”) 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: (‘.’)
os.pardir 获取当前目录的父目录字符串名:(‘..’)
os.makedirs(‘dirname1/dirname2’) 可生成多层递归目录
os.removedirs(‘dirname1’) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir(‘dirname’) 生成单级目录;相当于shell中mkdir dirname
os.rmdir(‘dirname’) 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir(‘dirname’) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename(“oldname”,”newname”) 重命名文件/目录
os.stat(‘path/filename’) 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为”",Linux下为”/“
os.linesep 输出当前平台使用的行终止符,win下为”\r\n”,Linux下为”\n”
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
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.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, …]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小

5-sys模块

sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。

方法 详解
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.modules.keys() 返回所有已经导入的模块列表
sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息
sys.exit(n) 退出程序,正常退出时exit(0)
sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.maxunicode 最大的Unicode值
sys.modules 返回系统导入的模块字段,key是模块名,value是模块
sys.path.append(path) 添加path到环境变量中
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout 标准输出
sys.stdin 标准输入
sys.stderr 错误输出
sys.exc_clear() 用来清除当前线程所出现的当前的或最近的错误信息
sys.exec_prefix 返回平台独立的python文件安装的位置
sys.byteorder 本地字节规则的指示器,big-endian平台的值是’big’,little-endian平台的值是’little’
sys.copyright 记录python版权相关的东西
sys.api_version 解释器的C的API版本

6-json和pickle模块

7-hashlib和hmac模块

9-numpy模块

10-pandas模块

11-matplotlib模块

12-re模块

13-typing模块

14-collections模块

15-pathlib模块(了解)

16-shutil模块(了解)

17-xml模块(了解)

18-subprocess模块(了解)

posted @ 2021-07-02 20:42  zheng-sn  阅读(70)  评论(0)    收藏  举报