• python常用小模块使用汇总


        在写代码过程中常用到一些好用的小模块,现整理汇总一下:

    1、获取当前的文件名和目录名,并添到系统环境变量中。

    file = os.path.abspath(__file__)                              #获取文件的绝对路径
    file_name = os.path.basename(file)                         #获取文件名
    file_dir = os.path.dirname(os.path.dirname(file))      #获取文件的上一层目录
    os.path.join(file_dir, "logs")
    sys.path.append(file_dir)

     具体常用的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下为" ",Linux下为" "
    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.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所指向的文件或者目录的最后修改时间
     

    2、获取字符串汉字的个数

    def get_chinese_num(uchar):
        i = 0
        for utext in uchar:
            if u'u4e00' <= utext <= u'u9fa5':
                i += 1
        return i
    
    str = "2015秋冬新款加绒保暖套头卫衣 15541707 BC17灰花灰"
    a = get_chinese_num(str)
    b = len(str)
    print(a,b)
    获取汉字个数

    3、 对print函数进行封装,根据不同类型显示不同颜色


    def show_message(msg, msgtype):
    """
    对print函数进行封装,根据不同类型显示不同颜色
    :param msg: 显示的消息体
    :param msgtype: 消息类型
    :return: 返回格式化过的内容
    """
        if msgtype == "NOTICE":
            show_msg = "
    33[1;33m{0}33[0m
    ".format(msg)
        elif msgtype == "ERROR":
            show_msg = "
    33[1;31m{0}33[0m
    ".format(msg)
        elif msgtype == "INFORMATION":
            show_msg = "
    33[1;32m{0}33[0m
    ".format(msg)
        else:
            show_msg = "
    {0}
    ".format(msg)
        print(show_msg)
    不同类型显示不同颜色

    4、根据时间生成一个不重复的流水号


    import time
    from datetime import datetime


    serno = "{0}{1}".format(datetime.now().strftime("%Y%m%d%H%M%S"), str(int(time.time())))
    print(serno)


    5、将数字星期转换为中文数字


    def numtochr(num_of_weekday):
    """
    将数字星期转换为中文数字
    :param num_of_weekday: 星期几的数字字符( 0,1,2,3,4,5,6)
    :return: 中文 星期几
    """
        chrtuple = ('', '', '', '', '', '''')
        num = int(num_of_weekday)
        return chrtuple[num]
    数字星期转换为中文数字

    6、判断input输入的信息是否为空的公共检测函数,为空继续输入,不为空返回输入的信息


    def input_msg(message, limit_value=tuple()):
        """
        判断input输入的信息是否为空的公共检测函数,为空继续输入,不为空返回输入的信息
        :param limit_value: 对输入的值有限制,必须为limit_value的值;ex:("admin","user")
        :param message: input()函数的提示信息
        :return: 返回输入的信息
        """
        is_null_flag = True
        while is_null_flag:
            input_value = input(message).strip().lower()
            if not input_value:
                show_message("输入不能为空!", "ERROR")
                continue
            elif len(limit_value) > 0:
                if input_value not in limit_value:
                    show_message("输入的值不正确,请重新输入!", "ERROR")
                    continue
                else:
                    is_null_flag = False
            else:
                is_null_flag = False
                continue
        return input_value
    输入是否为空

    实例说明:

    choose = common.input_msg("选择功能编号[1-5]: ", ("1", "2", "3", "4", "5")).strip()


    7、对输入的日期进行判断是否正确 yyyy-mm-dd or yyyy-m-d


    def input_date(msg, default_date):
        """
        对输入的日期进行判断是否正确 yyyy-mm-dd or yyyy-m-d
        :param msg:输入提示信息
        :param default_date: 默认日期
        :return:返回日期 str类型
        """
        check_flag = False
        while not check_flag:
            strdate = input(msg).strip()
            if not strdate:
                strdate = default_date
    
            try:
                date_list = strdate.split("-")
                result = date(int(date_list[0]), int(date_list[1]), int(date_list[2]))
                check_flag = True
            except ValueError:
                show_message("输入日期不合法,请重新输入!", "ERROR")
                continue
        return result.strftime("%Y-%m-%d")
    输入的日期进行判断是否正确

    8、生成一个指定范围值之内随机数,并对随机数进行判断

    def random_decide(random_num,cmp_value,cmp_mode='eq'):
        """
        生成一个指定范围值之内随机数,并对随机数进行判断
        :param random_num:用来定义随机数的范围值
        :param cmp_value:定义需要比对的值
        :param cmp_flag:如果是gt或lt,则进行大于或小于判断,如果是eq,则为等于判断,默认为eq
        :return:  返回True或False
        """
        ra = random.randrange(1,random_num)
        if  cmp_mode == 'eq':
            express = "{0} == {1}"
        elif cmp_mode == 'gt':
            express = "{0} > {1}"
        elif cmp_mode == 'lt':
            express = "{0} < {1}"
        else:
            show_message('比较模式错误','ERROR')
            return False
    
        flag = eval(express.format(ra,cmp_value))
    
        if flag:
            return True
        return False
    随机数大小判断

    9、中英文混合对齐

    def myljust(str1, width, fillchar = None):
        '''
        中英文混合左对齐
        :param str1: 欲对齐字符串
        :param  宽度
        :param fillchar: 填充字符串
        :return: 新的经过左对齐处理的字符串对象
        '''
        if fillchar == None:
            fillchar = ' '
        length = len(str1.encode('gb2312'))
        fill_char_size = width - length if width >= length else 0
        return "%s%s" %(str1, fillchar * fill_char_size)
    
    
    def myrjust(str1, width, fillchar = None):
        '''
        中英文混合右对齐
        :param str1: 欲对齐字符串
        :param  宽度
        :param fillchar: 填充字符串
        :return: 新的经过右对齐处理的字符串对象
        '''
        if fillchar == None:
            fillchar = ' '
        length = len(str1.encode('gb2312'))
        fill_char_size = width - length if width >= length else 0
        return "%s%s" %(fillchar * fill_char_size, str1)
    
    def mycenter(str1, width, fillchar = None):
        '''
        中英文混合居中对齐
        :param str1: 欲对齐字符串
        :param  宽度
        :param fillchar: 填充字符串
        :return: 新的经过居中对齐处理的字符串对象
        '''
        if fillchar == None:
            fillchar = ' '
        length = len(str1.encode('gb2312'))
    
        fill_char_size = width - length if width >= length else 0
        if length%2 == 0:
            return "%s%s%s" %(fillchar * (fill_char_size //2), str1, fillchar* (fill_char_size // 2))
        else:
            return "%s%s%s" %(fillchar * (fill_char_size //2 + 1), str1, fillchar* (fill_char_size // 2))
    中英文混合对齐

    10、字典的排序

    (1)、按照key来排序:

    ###方法一###
    print("####################################")
    for key in sorted(d.keys(),reverse = True):
    print(key, d[key])

    ###方法二###
    items = d.items()
    print("####################################")
    for key,value in sorted(items):
    print(key, value)
    ###方法三###
    print("####################################")
    print(list(map(d.get,sorted(d.keys()))))

    ###方法四###
    print("####################################")
    items = sorted(d.items(),key=lambda d:d[0],reverse = True)
    for key,value in items:
    print(key, value)
    这里的d.items()实际上是将d转换为可迭代对象,迭代对象的方法将字典的元素转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第一个元素作为比较参数,也就是key值作为比较对象。
    lambda x:y中x表示输出参数,y表示lambda函数的返回值),所以采用这种方法可以对字典的value进行排序。
    注意排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组。
    (2)、根据value排序:
    ###方法一###
    print("####################################")
    items = sorted(d.items(),key=lambda d:d[1],reverse = True)
    for key,value in items:
    print(key, value)
    这里的d.items()实际上是将d转换为可迭代对象,迭代对象的方法将字典的元素转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第二个元素作为比较参数,也就是value值作为比较对象。
    lambda x:y中x表示输出参数,y表示lambda函数的返回值),所以采用这种方法可以对字典的value进行排序。
    注意排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组。

    ###方法二###
    print("####################################")
    import operator
    print(sorted(d.items(),key = operator.itemgetter(1),reverse = True))
  • 相关阅读:
    Ubuntu16.04下同时安装Anaconda2与Anaconda3
    ansible 常用模块
    docker 笔记 (7) 限制容器
    linux 磁盘
    docker 笔记 (6)搭建本地registry
    docker 笔记 (5)常用命令
    docker 笔记(4) Dockerfile 常用的指令
    NGINX下配置CACHE-CONTROL
    mysql二进制安装
    [Selenium] Explicit wait 方法
  • 原文地址:https://www.cnblogs.com/wushank/p/5247250.html
Copyright © 2020-2023  润新知