zoukankan      html  css  js  c++  java
  • python 正则 时间

     
    解耦 = 解除耦合
    未解除耦合例子
     
    解除耦合例子
     
     
     
     
    问 : 帐号信息在db里为什么要分成一个一个的文件,而不把所有的帐号都放在一个文件里?
    答 : 由于A用户正在操作文件,B用户若也操作文件的话,B读到的实际上是个旧文件,当B又保存的时候,就没有把A已经更新的文件保存下去
     
    问  : 如何对登录状态进行校验
    哒: 设置个全局变量字典保存用户的个人信息,登录状态,登录成功后可以把信息返回给这个内存变量,给状态置位。
     
     
    1.定义:
    模块:本质就是.py结尾的python文件,用来从逻辑上组织python代码(变量、函数、类、逻辑 : 模块的本质就是实现一个功能)
     
    2.导入方法
    import moduel_name
    import moduel_name1,modeul_name2
    from moduel_name imoprt * (不建议这么使用)
    因为当A和B存在相同的function名的时候,会有冲突
    from module_alex import logger as log 因为方法使用了别名,所以就不会出现冲突的情况
     
    3.import本质
    本质就是把python文件解释一遍
    包 :用来从逻辑上组织模块,本质就是一个目录,带一个__init__.py的文件(必须带)
    导入包的本质就是执行该包下的__init__.py文件
    需要先在sys这个list中把绝对路径加进去
    获取绝对路径的话用 os.path.dirname(os.path.abspath(__file__))
     
    import os, sys
     
    #文件的路径
    fliename = os.path.abspath(__file__)
    print (fliename)
     
    #文件的目录
    dir_name = os.path.dirname(fliename)
    print (dir_name)
     
    #文件目录的目录
    top_dir_name = os.path.dirname(dir_name)
    print (top_dir_name)
     
    #添加环境变量
    sys.path.append(top_dir_name)
     
    C:UserszouyiPycharmProjectspython_classpythonDay_05studystudy1.py
    C:UserszouyiPycharmProjectspython_classpythonDay_05study
    C:UserszouyiPycharmProjectspython_classpythonDay_05
     
    4.导入优化
    就是通过from直接引用
    from . import test as ffff
     
     
    5.模块的分类
    a : 标准库
    b : 开源模块
    c : 自定义模块
     
    标准库
    1. time 和 datetime
    import time
    time.localtime #本地当前时间是个元祖
     
    import time
    import datetime
     
    #标准时间
    print (time.gmtime())
     
    #localtime
    print (time.localtime())
    #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=8, tm_wday=3, tm_yday=1, tm_isdst=0)
     
    #取时间年份
    s = time.localtime().tm_year
    print (s)
     
    time.struct_time(tm_year=2016, tm_mon=8, tm_mday=20, tm_hour=14, tm_min=35, tm_sec=15, tm_wday=5, tm_yday=233, tm_isdst=0)
     
    2016
     
    #元祖转换成时间戳
    time.mktime(s)
    12312313123
     
    #格式化时间
    date_value = time.strftime("%Y-%m-%d %H:%M:%S")
    print (date_value)
    2016-08-20 14:40:54
     
    datetime模块
     
    import  datetime
     
    #获取当前的时间
    print (datetime.datetime.now())
     
    #获取三天后的时间
    print (datetime.datetime.now()+datetime.timedelta(3))

    2016-08-20 15:07:25.001953
    2016-08-23 15:07:25.001953
     
    #获取3小时后的时间
    print (datetime.datetime.now()+datetime.timedelta(hours = 3))
     
    %a    本地(locale)简化星期名称    
    %A    本地完整星期名称    
    %b    本地简化月份名称    
    %B    本地完整月份名称    
    %c    本地相应的日期和时间表示    
    %d    一个月中的第几天(01 - 31)    
    %H    一天中的第几个小时(24小时制,00 - 23)    
    %I    第几个小时(12小时制,01 - 12)    
    %j    一年中的第几天(001 - 366)    
    %m    月份(01 - 12)    
    %M    分钟数(00 - 59)    
    %p    本地am或者pm的相应符    一    
    %S    秒(01 - 61)    二    
    %U    一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。    三    
    %w    一个星期中的第几天(0 - 60是星期天)    三    
    %W    和%U基本相同,不同的是%W以星期一为一个星期的开始。    
    %x    本地相应日期    
    %X    本地相应时间    
    %y    去掉世纪的年份(00 - 99)    
    %Y    完整的年份    
    %Z    时区的名字(如果不存在为空字符)    
    %%    %’字符
     
     
    random模块
    import random
     
    #取随机数字串
    random.randint(1,3)   #顾尾
    random.randrange(1,5) #顾头不顾尾
     
    #去随机字符串
    random.choice("zouyi") #序列,字符串,中取一个值
    random.choice("[1,2,3,4,5]")
     
    #洗牌功能
    items = [1,2,3,4,5]
    random.shuffle(items)
    [1,4,5,2,3]
     
    #取所有字符和数字
    import string
    checkcode = string.ascii_letters + string.digits
    print (checkcode)
    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
     
    #随机取数字
    str_1 = string.ascii_letters + string.digits
    code = random.sample(str_1,5)
    code = "".join(code)
    print (code)
     
    m = "".join(random.sample(string.ascii_letters+string.digits,4))
    print (m)
     
    os模块
    #获取当前路径
    os.getcwd()
     
    #切换目录
    os.chdir(r"c:/")
     
    #递归创建目录
    os.makedirs(r"c:/a/b/c/d/")
     
    #递归删除目录
    os.removedirs(r"c:/a/b/c/d/")
     
    #展示都有什么文件
    os.listdir(r"d:/")
     
    #路径和文件分割
    os.path.splite(r"c:/a/b/c/1.txt")
    ("c:/a/b/c/","1.txt")
     
    #取目录
    os.path.basedirname("c:/a/b/c/1.txt")
    c:/a/b/c
     
    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所指向的文件或者目录的最后修改时间
     
    configparser模块
    用来生成配置文件
     
    生成配置
    import configparser
     
    config = configparser.ConfigParser()
    config["DEFAULT"= {'ServerAliveInterval''45',
                          'Compression''yes',
                         'CompressionLevel''9'}
     
    config['bitbucket.org'= {}
    config['bitbucket.org']['User'= 'hg'
    config['topsecret.server.com'= {}
    topsecret = config['topsecret.server.com']
    topsecret['Host Port'= '50022'     # mutates the parser
    topsecret['ForwardX11'= 'no'  # same here
    config['DEFAULT']['ForwardX11'= 'yes'
    with open('example.ini''w') as configfile:
       config.write(configfile)
     
    读取配置
    import configparser
     
    conf = configparser.ConfigParser90
    config.sections()
    config.read()
    print (config.['bitbucket.org'])
     
     
     
    hashlib模块
    import hashlib
    m = hashlib.md5()
    m.update(b"hello")
    print (m.hexdigest()) #十六进制生成
    m.update(b"it me")
    print (m.hexdigest()) 
    m.update(b"sssssss")  #update是把上一个给增加上去了,也就是hello和hexdigest
    print (m.hexdigest())
     
     
    hmac消息加密
    h = hmac.new(b"123","test content中文".encode(encoding="utf-8"))
    print (h.hexdigest())
     
     
    正则模块
    '.' 默认匹配任意字符(除换行)
    '+' 匹配一次换多次 
    re.search('a.+',"abcdef")
    '?' 匹配0次或1次 匹配前一个"字符"一次或0次
    re.search("aaa?","aalexaaa")
     
    re.match 从头开始匹配
    re.search 匹配包含
    re.findall 把所有匹配到的字符放到以列表中的元素返回
    #findall没有group方法
    re.splitall 以匹配到的字符当做列表分隔符
    re.sub      匹配字符并替换
     
    正则字典模式
     
     
    正则替换sub
     
     
  • 相关阅读:
    6. Flask请求和响应
    5. Flask模板
    FW:Software Testing
    What is the difference between modified duration, effective duration and duration?
    How to push master to QA branch in GIT
    FTPS Firewall
    Query performance optimization of Vertica
    (Forward)5 Public Speaking Tips That'll Prepare You for Any Interview
    (转)The remote certificate is invalid according to the validation procedure
    Change
  • 原文地址:https://www.cnblogs.com/zoee/p/5809042.html
Copyright © 2011-2022 走看看