zoukankan      html  css  js  c++  java
  • Python 一些总结

    Python小整数池 -5 - 256

    字符串常用方法

    upper 和 lower  大小写转换

    s = 'name'
    s1 = s.upper()   # 全部大写
    s1 = s.lower()    # 全部小写

    startswith 和 endswith   是否已xx开头或结尾

    s = 'abcdef'
    print(s.startswith('a'))    # True 是否已a为开头
    print(s.startswith('ab'))   # True 是否已ab为开头
    print(s.startswith('b', 1, 4))   # True  第二个参数开始位置, 第三个参数结束为止-1 是否已b为开头
    
    print(s.endswith('f'))    # True 是否已a为结束
    print(s.endswith('ef'))   # True 是否已ef为结束
    print(s.endswith('d', 1, 4))   # True  第二个参数开始位置, 第三个参数结束为止-1 是否已d结束

    replace    字符串替换

    s = '张三asdasdasd张三1232131张三'
    s1 = s.replace('张三', '李四')  # 把字符串中所有张三替换成李四
    s1 = s.replace('张三', '李四', 2)  # 把字符串中前两个张三替换成李四

    strip  去除字符串指定字符

    s = '  张三   '
    s1 = s.strip()    # 默认去除空格
    s = 'aet张三123'
    s1 = s.strip('123aet')    # 去除字符串中所有填写的内容

    split  字符串分割默认空格分割, 分割后形成一个新的列表

    join  链接

    s = '张三'
    s1 = ':'.join(s)    # 张:三
    s = ['张三', '李四', '王五']   # 列表中必须都是字符串类型
    s1 = ':'.join(s)    # 张三:李四:王五

    count  字符串中出现的次数

    s = 'asdwerweasdrefvaads'
    print(s.count('a', 0, 9))   # a在字符串中出现的次数, 可以设置起始位置, 结束位置

    isalnum   isalpha   isdecimal   字符串由xxx组成

    s = 'asd123asq'
    print(s.isalnum())  # True  字符串由字母或数字组成
    print(s.isalpha())  # False 字符串由字母组成  判断是否为纯字母
    print(s.isdecimal())    # False  字符串由十进制组成(纯数字)  判断是否为纯数字

    len 获取可迭代对象的总个数

    s = '其味无穷二群2312'
    print(len(s))   # 10

    capitalize 首字母大写, 其余的变小写

    s = 'abcDef'
    s1 = s.capitalize()
    print(s1)   # Abcdef

    swapcase 字符串大写变小写, 小写变大写

    s = 'abcDef'
    s1 = s.swapcase()
    print(s1)   # ABCdEF

    title 每个单词首字母大写

    s = 'abcDef vbd'
    s1 = s.title()
    print(s1)   # Abcdef Vbd

    find 和 index 查找字符串中是否包含某个字符

    s = 'abcDef vbd'
    s1 = s.find('v')   # 查找到返回下边位置, 未找到返回 -1    二,三个参数可以设置起始位置
    s1 = s.index('t')   # 查找到返回下边位置, 未找到报错      二,三个参数可以设置起始位置
    print(s1)

    列表的相关

    ll = ['aaa', '张三', '李四', '王五', 'aaa', '赵六']
    ll.pop()   # 按照索引删除 , 默认删除最后一个, 返回值: 返回删除的名字
    ll.pop(1)   # 按照索引删除 , 默认删除最后一个, 返回值: 返回删除的名字
    ll.remove('aaa')    # 按照名字删除, 如果有多个默认删除第一个
    del ll[0]   # 按照索引删除, 还可以按照切片删除

    sort 和 reverse  排序和翻转

    l = [1,4,5,6,3,2,9,7] 
    l.sort()    # 默认从小到大排序 
    l.sort(reverse=True)    # 从小到大排序 
    l.reverse()     # 翻转 [7, 9, 2, 3, 6, 5, 4, 1] 
    print(l)

    文件操作相关

    r : 文件读

    • f.read()     读取文件全部内容
    • f.read(3)   读取指定的字符数
    • f.readline()  读取一行, 可以循环读取
    • f.readlines()  读取所有行放到列表中, 列表每个元素是一行内容  ['asdf ', 'qwe ', '123 ', 'zxc ', 'asd']

      

    • f.tell()    获取光标的所在位置, 单位字节
    • f.seek(0)    改变光标的所在位置
      • f.seek(0, 2)   文件最后位置
    • *****  for循环文件句柄f  *****

    w : 文件写

    • f.write('要写入文件的内容')  如果文件存在, 先清空原文件内容, 在写入 / 如果文件不存在, 自动创建文件 并写入
    • f.flush()   强制刷新

    a : 文件追加

    • f.write('要写入文件的内容')  如果文件存在, 追加内容 / 如果文件不存在, 自动创建文件 并写入

    获取一个对象的所有方法

    dir()

    s = 'dsfdsfqwd'
    print(dir(s))
    
    # ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', 
    '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__',
    '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize',
    'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit',
    'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition',
    'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate',
    'upper', 'zfill']

    内置函数

    reversed() 将一个序列翻转, 返回翻转序列的迭代器

    l = reversed('你好')  # l 获取到的是一个生成器
    print(list(l))   #['好', '你']
    ret = reversed([1, 4, 3, 7, 9])
    print(list(ret))  # [9, 7, 3, 4, 1]

    json序列化

    dumps    loads    xxx类型 转换 字符串 类型  和反转

    import json
    dic = {'name': '张三', 'age': 18, 'sex': ''}
    ret = json.dumps(dic)   # {"name": "u5f20u4e09", "age": 18, "sex": "u7537"}  字符串类型
    res = json.loads(ret)   # {'name': '张三', 'age': 18, 'sex': '男'}    字典

    os模块

    os.getcwd()  # 获取当前工作目录,即当前python脚本工作的目录路径 
    
    # 和文件夹相关 
    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')  # 获取文件/目录信息
    
    
    #path系列,和路径相关
    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的大小 

    collections模块

    Counter类的目的是用来跟踪值出现的次数

    from collections import Counter
    c = Counter('abcdeabcdabcaba')
    print(c)   # Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

    hashlib 模块

    import hashlib
    
    md5 = hashlib.md5(''.encode('utf-8'))   # md5( 这里可以加盐 要encode )
    md5.update('123456'.encode('utf-8'))
    print(md5.hexdigest())
    
    
    # sha系列,sha1,sha224,sha512等等,数字越大, 加密的方法越复杂,安全性越高,但是效率就会越慢。
    ret = hashlib.sha1(''.encode('utf-8'))
    ret.update('12345'.encode('utf-8'))
    print(ret.hexdigest())

    time模块

    时间表现的三种形式

    import time
    
    # 时间戳
    print(time.time())    # 1589504618.0347571
    
    # 格式化时间字符串
    print(time.strftime("%Y-%m-%d %X"))     # 2020-05-15 09:06:01
    print(time.strftime("%Y-%m-%d %H:%M:%S"))   # 2020-05-15 09:06:01
    
    # 时间元组
    # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=15, tm_hour=9, tm_min=6, tm_sec=52, tm_wday=4, tm_yday=136, tm_isdst=0)
    # tm_year(年)
    # tm_mon(月)
    # tm_mday(日)
    # tm_hour(时)
    # tm_min(分)
    # tm_sec(秒)
    # tm_wday(weekday)  0 - 6(0表示周一)
    # tm_yday(一年中的第几天)
    # tm_isdst(是否是夏令时) 默认为0
    print(time.localtime())


    ret = time.strftime('%Y{}%m{}%d %H:%M:%S')
    print(ret.format('年', '月', '日')) # 2020年05月15 09:21:16

    时间之间的转换

    import time
    
    ''' 格式化时间字符串先转换成时间元组, 然后转换成时间戳 begin '''
    # 格式化时间 ---->  结构化时间
    ft = time.strftime('%Y-%m-%d %H:%M:%S')
    print(ft)  # 2020-05-15 09:12:28
    st = time.strptime(ft,'%Y-%m-%d %H:%M:%S')
    print(st)  # (tm_year=2020, tm_mon=5, tm_mday=15, tm_hour=9, tm_min=12, tm_sec=28, tm_wday=4, tm_yday=136, tm_isdst=-1)
    
    # 结构化时间 ---> 时间戳
    t = time.mktime(st)
    print(t)  # 1589505248.0
    ''' 格式化时间字符串先转换成时间元组, 然后转换成时间戳 end '''
    
    
    ''' 时间戳先转换成时间元组, 然后转换成格式化时间字符串 begin '''
    # 时间戳 ----> 结构化时间
    t = time.time()
    print(t)  # 1589505451.538795
    st = time.localtime(t)
    print(st)  # (tm_year=2020, tm_mon=5, tm_mday=15, tm_hour=9, tm_min=17, tm_sec=31, tm_wday=4, tm_yday=136, tm_isdst=0)
    # 结构化时间 ---> 格式化时间
    ft = time.strftime('%Y-%m-%d %H:%M:%S',st)
    print(ft)  # 2020-05-15 09:18:27
    ''' 时间戳先转换成时间元组, 然后转换成格式化时间字符串 end '''

    datetime模块

    import datetime
    now_time = datetime.datetime.now()  # 现在的时间
    # 只能调整的字段:weeks days hours minutes seconds
    print(datetime.datetime.now() + datetime.timedelta(weeks=3)) # 三周后
    print(datetime.datetime.now() + datetime.timedelta(weeks=-3)) # 三周前
    print(datetime.datetime.now() + datetime.timedelta(days=-3)) # 三天前
    print(datetime.datetime.now() + datetime.timedelta(days=3)) # 三天后
    print(datetime.datetime.now() + datetime.timedelta(hours=5)) # 5小时后
    print(datetime.datetime.now() + datetime.timedelta(hours=-5)) # 5小时前
    print(datetime.datetime.now() + datetime.timedelta(minutes=-15)) # 15分钟前
    print(datetime.datetime.now() + datetime.timedelta(minutes=15)) # 15分钟后
    print(datetime.datetime.now() + datetime.timedelta(seconds=-70)) # 70秒前
    print(datetime.datetime.now() + datetime.timedelta(seconds=70)) # 70秒后
    
    current_time = datetime.datetime.now()
    # 可直接调整到指定的 年 月 日 时 分 秒 等   2020-05-15 09:44:41.401379
    
    print(current_time.replace(year=1977))  # 直接调整到1977年 1977-05-15 09:43:31.401392
    print(current_time.replace(month=1))  # 直接调整到1月份  2020-01-15 09:43:31.401392
    print(current_time.replace(year=1989,month=4,day=25))  # 1989-04-25 18:49:05.898601
    
    # 将时间戳转化成时间
    print(datetime.date.fromtimestamp(1232132131))  # 2009-01-17

    random随机模块

    import random
    # 随机小数
    print(random.random())   # 0.9007997923094767
    print(random.uniform(1, 3))   # 1.516807290488208
    
    # 随机整数
    print(random.randint(1, 5))    # 5
    print(random.randrange(1, 10, 2))  # 大于等于1且小于10之间的奇数
    
    
    # 随机选择一个返回
    print(random.choice([1, '23', [4, 5]]))    # 1或者23或者[4,5]
    # 随机选择多个返回,返回的个数为函数的第二个参数
    print(random.sample([1, '23', [4, 5]], 2))   # [[4, 5], 1]
    
    
    # 打乱列表顺序
    item=[1,3,5,7,9]
    random.shuffle(item)
    print(item)   # [5, 1, 7, 9, 3]

    随机验证码

    import random
    
    def v_code(amount):
    
        code = ''
        for i in range(amount):
    
            num = random.randint(0, 9)
            lower_char = chr(random.randint(97, 122))    # a-z
            upper_char = chr(random.randint(65, 90))    # A-Z
            add = random.choice([num, lower_char, upper_char])
            code = "".join([code, str(add)])
    
        return code
    
    print(v_code(6))

    logging模块

    log文件的相关配置

    """
    logging配置
    """
    
    import os
    import logging.config
    
    # 定义三种日志输出格式 开始
    
    standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d][%(levelname)s][%(message)s]' #其中name为getlogger指定的名字
    
    simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
    
    id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
    
    # 定义日志输出格式 结束
    
    logfile_dir = os.path.dirname(os.path.abspath(__file__))  # log文件的目录
    
    # print(logfile_dir)
    
    logfile_name = 'log.log'  # log文件名
    
    # 如果不存在定义的日志目录就创建一个
    if not os.path.isdir(logfile_dir):
        os.mkdir(logfile_dir)
    
    # log文件的全路径
    logfile_path = os.path.join(logfile_dir, logfile_name)
    print(logfile_path)
    # log配置字典
    LOGGING_DIC = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'standard': {
                'format': standard_format
            },
            'simple': {
                'format': simple_format
            },
        },
        'filters': {},
        'handlers': {
            # 打印到终端的日志
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',  # 打印到屏幕
                'formatter': 'simple'
            },
            # 打印到文件的日志,收集info及以上的日志
            'default': {
                'level': 'DEBUG',
                'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
                'formatter': 'standard',
                'filename': logfile_path,  # 日志文件
                'maxBytes': 1024*1024*5,  # 日志大小 5M
                'backupCount': 5,    # 循环的文件数
                'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
            },
        },
        'loggers': {
            # logging.getLogger(__name__)拿到的logger配置
            '': {
                'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
                'level': 'DEBUG',
                'propagate': True,  # 向上(更高level的logger)传递
            },
        },
    }
    
    
    def load_my_logging_cfg():
        logging.config.dictConfig(LOGGING_DIC)  # 导入上面定义的logging配置
        logger = logging.getLogger(__name__)  # 生成一个log实例
        logger.info('It works!')  # 记录该文件的运行状态
    
    if __name__ == '__main__':
        load_my_logging_cfg()
  • 相关阅读:
    (转载) mysql中,option是保留字段么?
    (转载)腾讯CMEM的PHP扩展
    (转载)一句简单命令重启nginx
    (转载)四种常见的 POST 提交数据方式
    (转载)完美解决PHP中文乱码问题
    (转载)file_get_contents("php://input")
    (转载)PHP 下 CURL 通过 POST 提交表单失败的原因之一与解决办法
    (转载)php array_merge 和 两数组相加区别
    Immutable-不变模式与不变类
    zookeeper 编程框架 curator
  • 原文地址:https://www.cnblogs.com/zjj1990/p/12800241.html
Copyright © 2011-2022 走看看