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
 
 
原文地址:https://www.cnblogs.com/zoee/p/5809042.html