zoukankan      html  css  js  c++  java
  • Python学习笔记(十三)—函数常用模块

    一、模块、包的概念

    模块就是一个包含所有你定义的函数和变量的文件,其后缀名是.py。

    模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。

    什么是包?

    包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件,包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果你想导入其他目录下的模块,那么这个目录必须是一个包才可以导入

    二、导入模块

    模块分为:

      标准模块:Python内置模块

      第三方模块:开源模块

      自己开发的模块:自己写的模块

    为什么需要导入模块?打个比方如果你想在一个A模块中去调用B模块的方法,这个时候就需要去导入B模块其次才能使用B模块中封装的函数方法。导入模块的本质就是把python文件拿过来执行一次。

    (使用包中的模块需要在__init__.py文件中from . import xxx)

    模块大导入方法为import函数,语法格式如下:

    import module1[, module2[,... moduleN]

    实例

     

    三、random标准模块

    random.randint----随机产生一个整数

    1 import random  #导入模块
    2 print(random.randint(1,100)) #随机在1-100之间产生一个整数

    random.uniform----随机产生一个小数

    import random
    print(random.uniform(1,1000)) #随机产生一个1-1000之间的小数

    random.choice----随机选择1个元素(可以循环的都可以取值)

    import random
    stu = ['1','2','3','4','5','6']
    print(random.choice(stu)) #随机选择一个元素,choice只要是可以循环的都可以取值

    random.sample----随机选择N个元素(可以循环的都可以取值)

    import random
    stu = ['1','2','3','4','5','6']
    print(random.sample(stu,2)) #随机取N个值

    random.random----随机生成的一个实数,它在[0,1)范围内

    import random
    print(random.random())

    random.randrange----指定范围生成一个随机整数

    import random
    print(random.randrange(1,100))  #生成一个1到100的随机整数
    print( random.randrange(1,100,5) ) #生成一个1到100的间隔为5的随机整数

    random.shuffle----洗牌,将原顺序打乱

    import random
    stu = ['1','2','3','4','5','6']
    print(random.shuffle(stu)) #洗牌,打乱顺序,无返回值;只能传入list

    四、time、datetime模块

    两个模块都是对时间进行相关的操作;时间戳,即从计算机诞生到现在过了多少时间。

    time和datetime模块主要用于操作时间

    time.time----获取当前的时间戳

    time.sleep()----设置休眠时间,单位为秒

    time.gmtime()----把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳

    time.strftime()----将时间元组转换成格式化输出的字符串,如果时间不传,默认取当前时间的值

    time.mktime()----把时间元组转换成时间戳

    time.localtime()----把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳

    time.asctime()----时间元组转换成格式化时间

    time.ctime())----时间戳转换成格式化时间

    time.timezone()----和标准时间相差的时间,单位是s

    import time
    print(time.time()) #获取当前的时间戳
    time.sleep(1)  #休眠5秒,继续执行程序
    print(time.gmtime()) #把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳
    print(time.strftime("%Y %m %d %H:%M:%S"))#将时间元组转换成格式化输出的字符串
    print(time.strptime("20160204 191919","%Y%m%d %H%M%S"))#将格式化的时间转换成时间元组
    print(time.mktime(time.gmtime())) # 把时间元组转换成时间戳
    print(time.localtime()) #把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳
    print(time.asctime())#时间元组转换成格式化时间
    print(time.ctime())#时间戳转换成格式化时间
    print(time.timezone)#和标准时间相差的时间,单位是s
    说明:如果想把时间戳转换成格式化好的时间,或者反过来,把格式化好的时间转换成时间戳;则必须将其先转换成时间元祖
    例如:把格式化时间修改
        1、先把格式化好的时间转成时间元祖
        2、然后时间元祖在转成时间戳
        3、时间=1992-01-03
    res = time.strptime('1992-01-03 19:23:59','%Y-%m-%d %H:%M:%S')
    print(res) #把格式化好的时间转换成时间元祖
    print(time.mktime(res))  #把时间元组转换成时间戳
    
    运行结果:
    694437839.0
    格式化好的时间转换时间戳的方法:
    def str_to_timestamp(time_str=None,format='%Y%m%d%H%M%S'):
        '''格式化好的时间转时间戳,如果不传参数返回当前时间'''
        if time_str:
            time_tuple = time.strptime(time_str,format) #把格式化好的时间转成时间元组
            timestamp = time.mktime(time_tuple) #把时间元组转成时间戳
        else:
            timestamp = time.time() #获取当前的时间戳,# print(time.time()) #获取当前的时间戳,精确到毫秒,有小数点,如果不想要 转换成int类型即可
        return int(timestamp)
    print(str_to_timestamp())
    print(str_to_timestamp('20391123175123'))
    print(str_to_timestamp('2013-08-09','%Y-%m-%d')) #按传入的格式,而非默认格式运行
    
    
    运行结果:
    1585092104
    2205654683
    1375977600
    时间戳转换成格式化好的时间的方法:
    def timestamp_to_strtime(timestamp = None,format = '%Y-%m-%d %H:%M:%S'):
        '''1、把时间戳转成格式化好的时间;2、如果不传入时间戳,那么就返回当前的时间'''
        if timestamp:
            time_tuple = time.localtime(timestamp)  # 把时间戳转成时间元组,将时间转换成当前时区的时间
            str_time  = time.strftime(format,time_tuple) #格式化输出时间元组
        else:
            str_time = time.strftime(format)  #
        return str_time
    
    举个例子:
    取3个月后的时间
    分析:用当前的时间戳+三个月后的秒数,然后把时间戳转成格式化好的时间
    time_str = str_to_timestamp() + (3*30*24*60*60)
    res = timestamp_to_strtime(time_str)
    print('3个月后的时间:',res)
    
    运行结果:
    三个月后的时间: 2020-06-23 07:27:56
    说明:这里的月都是按照30天计算的正常情况下应该判断当前月的天数

    datime.datetime.now()----获取当前时间并格式化输出

    datetime.datetime.today()----获取当前的时间信息

    datetime.date.today()----获取当前的日志

    import datetime
    print(datetime.datetime.now()) #获取当前时间并格式化输出
    print(datetime.datetime.now() + datetime.timedelta(3)) #计算三天后的时间
    print(datetime.datetime.now() + datetime.timedelta(-3)) #三天前的时间
    print(datetime.datetime.today()) #获取当前的时间
    print(datetime.date.today()) #获取当前的日期

    python中时间日期格式化符号:

    • %y 两位数的年份表示(00-99)
    • %Y 四位数的年份表示(000-9999)
    • %m 月份(01-12)
    • %d 月内中的一天(0-31)
    • %H 24小时制小时数(0-23)
    • %I 12小时制小时数(01-12)
    • %M 分钟数(00=59)
    • %S 秒(00-59)
    • %a 本地简化星期名称
    • %A 本地完整星期名称
    • %b 本地简化的月份名称
    • %B 本地完整的月份名称
    • %c 本地相应的日期表示和时间表示
    • %j 年内的一天(001-366)
    • %p 本地A.M.或P.M.的等价符
    • %U 一年中的星期数(00-53)星期天为星期的开始
    • %w 星期(0-6),星期天为星期的开始
    • %W 一年中的星期数(00-53)星期一为星期的开始
    • %x 本地相应的日期表示
    • %X 本地相应的时间表示
    • %Z 当前时区的名称
    • %% %号本身

    五、string模块

    string.ascii_lowercase----所有的小写字母
    string.ascii_uppercase----所有的大写字母
    string.digits----0-9整数
    string.punctuation----特殊字符
    string.ascii_letters----所有的大小写字母

    import string
    print(string.ascii_lowercase)  #所有的小写字母
    print(string.ascii_uppercase)  #所有的大写字母
    print(string.digits) #0-9整数
    print(string.punctuation)  #特殊字符
    print(string.ascii_letters) #所有的大小字母

    运行结果:

    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    0123456789
    !"#$%&'()*+,-./:;<=>?@[]^_`{|}~
    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

     六、OS模块

    os.mkdir(path)---创建文件夹

    os.makedirs(path)---创建递归文件夹

    注意:mkdir和madedirs的区别:mkdir 只能创建单层次的文件夹;创建多层文件夹时会报错;makedirs不仅可以创建单层文件夹还能创建多层文件夹

    os.rename(src,dst)---重命名文件或目录,从 src 到 dst

    os.remove(path)---删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。

    os.removedirs(path)---递归删除目录。只能删除空文件夹,如果文件夹有内容是删除不了的

    os.listdir(path)---返回path指定的文件夹包含的文件或文件夹的名字的列表。如果为空不传参数,则显示当前目录下的文件或文件夹名字列表

    os.system(命令)---执行操作系统命令,无法返回执行的结果;

    os.popen(命令)---用来执行操作系统的命令,可以返回执行的结果

    注意:system和popen命令的区别是,system只是单纯的执行命令并将结果显示给用户,是没有返回值的;而popen命令不仅可以显示命令执行结果,还能将结果的值进行返回

    os.walk()---可以将指定文件路径下所有的文件及文件夹找出来

    os.getcwd()---获取当前文件的路径

    os.chdir()---进入到某一个目录(路径)下

    os.path.isdir(path)---判断路径是否为目录

    os.path.isfile(path)---判断路径是否为文件

    os.paht.exists(path)---判断文件或者文件夹是否存在,存在返回true 不存在返回false

    os.path.join(path1[, path2[, ...]])---把目录和文件名合成一个路径

    os.path.split(path)---把路径分割成文件路径和 文件名称,返回一个元组;

    os.path.dirname(path)---返回文件路径;取文件的父目录

    os.path.getsize(path)---返回文件大小,如果文件不存在就返回错误;单位是字节

    os.path.getctime(path)---返回文件 path 创建时间

    os.path.getmtime(path)---返回最近文件修改时间

    os.path.getatime(path)---返回文件/目录最近访问时间(浮点型秒数)

    os.mkdir('test') #在当前目录下创建一个test文件夹
    os.makedirs(r'test	est1	est11') #在test目录下创建递归文件夹
    os.rename('test','study') #将当前目录下的test文件夹修改名称为study
    os.remove('aa.txt') #删除当前目录下的aa.txt文件(可以指定目录)
    os.removedirs(r'study	est1') #会报错,因为test1下边有文件
    print(os.getcwd())#获取当前目录的路径
    print(os.chdir(r'G:\')) #修改文件/文件夹路径
    print(os.path.isdir('study')) #判断study是否是文件夹
    print(os.path.isfile('OS模块.py')) #判断os模块是否是文件
    print(os.path.exists('study')) #判断文件或者文件夹是否存在,存在返回true 不存在返回false
    print(os.path.join(r'study	est1','OS模块.py')) #将path和文件组成一个新的路径
    print(os.path.split(r'c:	est	est1a.txt')) #把文件路径分割成文件和文件路径两部分并返回一个元组
    print(os.path.dirname(r'c:	est	est1a.txt')) #返回a.txt文件的父目录路径
    print(os.path.getsize('OS模块.py')) #返回os文件的大小
    print(os.path.getctime('study')) #显示创建时间
    print(os.path.getatime('study')) #显示文件夹最近访问时间
    print(os.path.getmtime('study')) #显示文件夹最近修改时间

    OS.walk()用法:它可以将指定文件路径下所有的文件及文件夹找出来;

    其有三个返回参数;

     当前目录

     目录下的文件

     目录下的文件夹

    例1:
    res = os.walk('china')  
    for cur_path,dirs,files in res:
        print('当前目录:',cur_path)
        print('当前目录下所有文件',files)
        print('当前目录下所有文件夹:',dirs)
        print('==========================')
    
    运行结果:
    当前目录: china
    当前目录下所有文件 []
    当前目录下所有文件夹: ['beijing']
    ==========================
    当前目录: chinaeijing
    当前目录下所有文件 []
    当前目录下所有文件夹: ['haidian']
    ==========================
    当前目录: chinaeijinghaidian
    当前目录下所有文件 []
    当前目录下所有文件夹: []
    例2:插件文件方法
    def find_file(path,keyword):
        '''查找文件路径'''
        res = os.walk(path)
        for cur_path,dirs,files in res:
            for file_name in files:
                if keyword in file_name:
                    print('该文件在%s目录下'%cur_path)
    find_file('G:\','fullstack')
  • 相关阅读:
    if 语句
    变量命名
    python变量
    运算符
    注释
    PyCharm
    python版本,执行
    Tornado 【简述】
    Git 【管理篇】
    MySQL的介绍
  • 原文地址:https://www.cnblogs.com/beginner-boy/p/12530106.html
Copyright © 2011-2022 走看看