Day22~23 模块
strip()默认去首尾空格和回车
路径拼接尽量用join不用+号
###自定义模块
Package有__init__.py 文件,文件夹Directory中没有__init__.py
alt+/ 调上一个函数
###import功能:1.执行对应的文件,2.引入变量名
比较
import cal
cal.add()
或
from cal import add
add()
from cal import * ###导出cal模块中所有功能,但不推荐该写法,有可能会与def自定义函数重名,结果指向最后的函数
###import寻找的路径
import sys
print(sys.path)#sys.path的路径就是执行文件bin.py的路径,即当前文件bin.py所在的位置(bin.py作为程序的入口)
可以新建package命名my_module(和bin.py同级)里面放置有cal.py,即可from my_module import cal使用cal函数,即便是my_module下的文件也从bin.py的文件层级开始检索(遵从sys.path路径), 意即my_module下的文件即便是同级文件也不能相互import,必须是执行文件同级才可以相互import,否则用from…import…找寻
main.py逻辑相关组函数,所有与逻辑相关的函数都房在此文件里
package用来组织模块,不同的包可以避免同名模块的冲突
###包被调用时,执行相应的__init__文件
若web1,web2,web3都为package,cal为.py文件,add为函数名,且web1包含web2,web2包含web3
则
from web1.web2.web3 import cal
cal.add()
或
from web1.web2.web3.cal import add
add()
###写测试代码的语句
if __name__==“__main__” #该语句若放在bin文件中表示不想让该bin文件被调用
main.run()
###总汇
重要的模块:log,re
json,pickle,shelve重点使用json
###time模块,不在lib文件夹内
print(time.time())#时间戳,计算从1970年1月1日00:00据此刻共计多少秒,1970年unix诞生time.localtime() #struct time结构化时间,当地时间
time.gmtime() #世界标准时间(英国)
time.mktime(time.localtime()) #将结构化时间转化成时间戳
#将结构化时间转成字符串时间strftime %X时分秒
print(time.strftime("%Y---%m-%d %X",time.localtime()))
>>>2019---08-14 12:52:05
# ------将字符串时间转成结构化时间strptime
print(time.strptime("2016:12:24:17:50:36","%Y:%m:%d:%X"))
>>>time.struct_time(tm_year=2016, tm_mon=12, tm_mday=24, tm_hour=17, tm_min=50, tm_sec=36, tm_wday=5, tm_yday=359, tm_isdst=-1)
print(time.asctime())
print(time.ctime())
>>>Wed Aug 14 13:21:51 2019
import datetime
print(datetime.datetime.now())
###随机模块random
随机字母
alf=chr(random.randint(65,122))
import random
ret=random.random()
ret=random.randint(1,3)
ret=random.randrange(1,3)
ret=random.choice([11,22,33,44,55])
ret=random.sample([11,22,33,44,55],2)
ret=random.uniform(1,4)
ret=[1,2,3,4,5]
random.shuffle(ret)
#设置验证码
def v_code():
ret=""
for i in range(5):
num=random.randint(0,9)
alf=chr(random.randint(65,122))
s=str(random.choice([num,alf]))
ret+=s
return ret
print(v_code())
###__file__,Pycharm中处理为绝对路径+文件名,BASE_DIR
临时添加路径
import sys
sys.path.append(r“c:\….”)#建议填路径不要如此写,程序写死
import os
print(__file__)#当前文件路径及名
os.path.dirname(__file__)
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))
sys.path.append(BASE_DIR)
os.path.abspath绝对路径,pycharm和终端都可使用
###os模块
os.chdir(".")返回当前目录: ('.')
os.chdir("..") 获取当前目录的父目录字符串名:('..')
os.listdir() 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下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
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(a,b) 涉及路径拼接
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
###sys模块
sys.argv
sys.stdout.write(“#”)
import sys,time
for i in range(10):
sys.stdout.write(‘#’)#写一个#号但不显示放入缓存里等10个#号写好一次性放出,故需刷新用flush
time.sleep(1)
该语句使号立刻在屏幕上显示
###json,pickle序列化对象
如果有字符串的话,json把单引号都变为双引号
json.dumps()可以把所有数据类型转换为字符串
dic_str=json.dumps(dic)
data=json.loads(‘文件名’)
pickle.dumps()处理为字节
推荐用json
###xml
###re正则表达式(很重要)
由C编写,所以速度很快
元字符:. ^ $ * + ? { } [ ] | ( ) \
re.findall(“xyy*?”,”daagagbxyyyy”)
. 通配符代表除了\外的任意一个符号
^ 以什么作为开头,如^a,只在字符串的开头匹配
$ 以什么作为结尾,如x$, 结尾是x进行匹配
* 按照紧挨的字符重复匹配0到无穷次
+ 按照紧挨的字符重复匹配1到无穷次
?按照紧挨的字符重复匹配0到1次
{ } 按照紧挨的字符重复,范围自己定,例如{6},表示重复6次,或{3,}表示重复3到无穷次
* + ? { }均属贪婪匹配,按最大次匹配。后面加?变为惰性匹配
[ ] 字符集,字符集里无特殊符号
[a-z],匹配abcd…xyz
[^a-z] [^]里的^非的意思表示非a到z
[ ]:特殊-,^,\
例如:re.findall(“q[^a-z]”,”qr’)
>>>[ ]
\ 功能进行转义
反斜杠后边跟元字符去除特殊功能,比如\.
反斜杠后边跟普通字符实现特殊功能,比如\d
\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,比如空格 ,&,#等
r”\b”,加r表示字符串不做任何转义
() re.search(“(?P<name>\w+)”,””).group(“name”)
| 的优先级高于()
findall返回列表,search返回的是对象,只找到一个满足条件的就不在找了,用re.search().group()
re.findall(。。。(。。。)。。。) 优先匹配分组,再匹配其他,
去优先级re.findall(。。。(?:。。。)。。。)
re.match()同search,仅在字符串起始处匹配
re.split(” “,”hello abc def“) #按空格分割
>>>[‘hello’,’abc’,’def’]
re.split(“[ab]”,”abc”) #先按a分abc,a左边为空,右边bc,得到结果[‘’,bc],同理再用b分[‘’,bc]
>>>[‘’,’’,’c’]
re.sub(”匹配规则“,”替换对象“,”字符串“ ,匹配次数)
re.subn() 返回元组形式
com = re.compile(“规则”)
com.findall(“字符串”)
re.finditer() 封装返回到迭代器里
ret=re.finditer(…)
next(ret).group()
###config
不区分大小写
default 公共默认部分
###hashlib模块
摘要算法: 把不定长的字符串转化成定长的,转化的密文是唯一的
md5只能把明文变成密文,sha256常用
import hashlib
obj = hashlib.md5()
obj.update(“hello”.encode(“utf8”))
print(obj.hexdigest())
原文地址:https://www.cnblogs.com/xuwinwin/p/11465504.html
- 如何重构你的时间序列预测问题
- 【聊】我个人眼里的ReactJs生态系统
- [WCF REST] Web消息主体风格(Message Body Style)
- apache配置https服务
- [WCF 4.0新特性] 默认绑定和行为配置
- mysql数据库及django用户名启用中文的方法
- 【学习笔记】先行者课程0109-rotate3d_变量、堆、栈
- 通过WCF扩展实现消息压缩
- Linux系统中的信号量机制
- 基于Linux与lpc3250开发板的交叉开发环境搭建
- WCF中关于可靠会话的BUG!!
- [WCF安全系列]谈谈WCF的客户端认证[Windows认证]
- ls命令实现分析
- [WCF安全系列]谈谈WCF的客户端认证[X.509证书认证]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- kubernetes(十五) kubernetes 运维
- JVM层GC调优(下)
- pytest封神之路第一步 tep介绍
- kubernetes(十六) k8s 弹性伸缩
- Mockito鸡尾酒第一杯 Java单测Mock
- kubernetes(十七) Helm V3 入门到放弃
- Dockerfile文件万字全面解析
- Go测试开发(一) 怎么写Go代码
- kubernetes(十八)集群网路
- Nginx性能监控与调优
- pytest封神之路第二步 132个命令行参数用法
- Jumpserver2.2部署文档
- Golang多线程简单斗地主
- Tomcat性能监控与调优
- Vue+SpringBoot项目实战(一) 搭建环境