这两天学习了一些基本的Python模块,现在做一些整理,理清楚

查看大佬的理解:http://www.cnblogs.com/alex3714/articles/5161349.html

开始时间:15:32:06 先标一下开始时间,看看用多久写完这一篇整理= =

分别是以下几个模块:

import 模块调用

time  时间模块

os  系统管理模块

ranadom  随机数模块

re  正则表达式模块

sys 环境配置模块

json pickle 模块

hashlib  哈希模块

import 模块调用

import是一个用的最多的一种方法,它应该不算是一个模块,但是在理解模块前必须得理解import这个方法

1 import time #导入时间模块

2 import time from time #从时间模块导入time()函数

3 import time from time as TIME #同上,并赋予新名称为TIME

4 '''

5 import 的实质就是执行导入的代码6 包的本质是一个目录(内部必须含有__init__.py)用来从逻辑上组织模块7 导入包,即执行该包下的__init__.py文件8 注意import只会在当前环境变量中搜索导入的包,所以当跨文件导入包时,要先添加环境变量,如下添加环境变量:9 '''

10 importos11 #help(os)

12 importsys13 print(sys.path)#查看当前环境路径

14 print(__file__)#查看当前文件相对路径

15 #所谓相对路径,例如:/pytext/zhihu/day5_1.py 这就是相对路径

16 #将相对路径修改为绝对路径

17 print()#现在输出的就是绝对路径

18 #通过下面的方法返回上一级文件,例如,返回一层

19 print()20 #依次类推,就能找到所需要添加的环境变量

21 #找到后如下添加到环境路径中

22 sys.path.append(os.path.dirname(os.path.abspath(__file__)))23 #一般要用到的话至少返回两层以上,此处简写了

View Code

1 import time #导入时间模块

2 import time from time #从时间模块导入time()函数

3 import time from time as TIME #同上,并赋予新名称为TIME

4 '''

5 import 的实质就是执行导入的代码6 包的本质是一个目录(内部必须含有__init__.py)用来从逻辑上组织模块7 导入包,即执行该包下的__init__.py文件8 注意import只会在当前环境变量中搜索导入的包,所以当跨文件导入包时,要先添加环境变量,如下添加环境变量:9 '''

10 importos11 #help(os)

12 importsys13 print(sys.path)#查看当前环境路径

14 print(__file__)#查看当前文件相对路径

15 #所谓相对路径,例如:/pytext/zhihu/day5_1.py 这就是相对路径

16 #将相对路径修改为绝对路径

17 print()#现在输出的就是绝对路径

18 #通过下面的方法返回上一级文件,例如,返回一层

19 print()20 #依次类推,就能找到所需要添加的环境变量

21 #找到后如下添加到环境路径中

22 sys.path.append(os.path.dirname(os.path.abspath(__file__)))23 #一般要用到的话至少返回两层以上,此处简写了

View Code

导入优化,假如一个模块包含很多函数,但是你仅仅需要其中一个,此时就可以使用from来优化函数的调用,

减少内存的消耗,不对,就是尽量使用from,以最大化优化,避免冗余的代码工作

time 时间模块

在时间模块中,时间被定义成三种形式

时间戳:  时间戳是指从1970年1月1日零点开始距离现在的时间多少,它以秒为格式

时间元组: struct_time 是以九种时间格式组成的元组

时间字符串形式: 就是平常见到的年月日,时分秒

1 '''

2 该模块中所有函数如下3 time() -- return current time in seconds since the Epoch as a float4 返回当前的时间戳5 clock() -- return CPU time since process start as a float6 返回处理器时间,3.3开始已废弃 , 改成了time.process_time()测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来7 sleep() -- delay for a number of seconds given as a float8 作用使程序暂停一段时间9 gmtime() -- convert seconds since Epoch to UTC tuple10 返回标准时间,即格林尼治时间11 localtime() -- convert seconds since Epoch to local time tuple12 返回本机时间,已时间元组的形式返回13 asctime() -- convert time tuple to string14 将时间元组转化为字符串形式15 ctime() -- convert time in seconds to string16 将时间戳转换成字符串形式17 mktime() -- convert local time tuple to seconds since Epoch18 将时间戳转换成时间元组形式19 strftime() -- convert time tuple to string according to format specification20 按照给定的格式将时间元组转换成字符串形式21 strptime() -- parse string to time tuple according to format specification22 与上一个相反23 tzset() -- change the local timezone24 改变当前时区= =旅行必备,可以通过这个开发一个自动调整为当地时间的工具25 '''

View Code

这个部分在帮助文档里说的很细,有什么不清楚请用help(time)

再说一下时间元组的九个元素

tm_hour    一天24个小时

tm_isdst    是否是夏令时,1为是,0为否,-1为不知道

tm_mday    这个月中的第几天

tm_min    这个小时中的第多少分钟

tm_mon    一年中的第几个月

tm_sec    这分钟中的第几秒

tm_wday    这一周中的第几天

tm_yday    这一年中的第几天

tm_year    今夕是何年呐

时间元组的格式如下:

time.struct_time(tm_year=2017, tm_mon=4, tm_mday=10, tm_hour=16, tm_min=53, tm_sec=55, tm_wday=0, tm_yday=100, tm_isdst=0)

另外还有一个datetime模块,是基于time模块的一个加强版

os 系统管理模块

提供对操作系统进行调用的方法

1 #文件操作中,这个版块很重要

2 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径3 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd4 os.curdir 返回当前目录: ('.')5 os.pardir 获取当前目录的父目录字符串名:('..')6 os.makedirs('dirname1/dirname2') 可生成多层递归目录7 #是指可以连续在建立的新文件中建立新文件,本质是对mkdir的重复调用

8 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推9 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname10 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname,用于清理电脑?11 os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印12 os.remove() 删除一个文件13 os.rename("oldname","newname") 重命名文件/目录14 os.stat('path/filename') 获取文件/目录信息15 os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"

16 os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"

17 os.pathsep 输出用于分割文件路径的字符串18 os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

19 os.system("bash command") 运行shell命令,直接显示20 os.environ 获取系统环境变量21 os.path.abspath(path) 返回path规范化的绝对路径22 os.path.split(path) 将path分割成目录和文件名二元组返回23 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素24 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素25 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False26 os.path.isabs(path) 如果path是绝对路径,返回True27 os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False28 os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False29 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略30 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间31 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间

View Code

之前还在想这个操作里面怎么没有建立新文件,现在想想直接用'w'模式写入不就创建了一个新文件嘛

这个模块用到的地方还是挺多的,文件的建立,删除,路径查询,在垃圾文件的处理方面应该也用的上

random 随机数模块

这个模块有意思了,程序中很多地方都要用到这种伪随机数,游戏里可以用到

1 importtime2 importrandom3 puke =[]4 huase = ['红心','梅花','黑桃','方块']5 for one in range(0,4):6 aa =[]7 for i in range(1,14):8 i = huase[one] +str(i)9 puke.append(i)10 puke.append('大王')11 puke.append('小王')12 print(puke)13 print(len(puke))14 for num in range(10):15 print(random.sample(puke,17))16 whileTrue:17 beilv = 1

18 person =random.shuffle(puke)19 person1 = puke[0:17]20 print(len(person1),person1)21 person2 = puke[17:34]22 print(len(person2),person2)23 person3 = puke[34:51]24 print(len(person3),person3)25 choose = puke[51:55]26 #现在把扑克牌分发显示给各位玩家

27 #玩家反馈是否叫地主,由随机庄家开始叫地主,如果抢地主则倍率*2

28 #将底牌加入地主的牌库

29 #现在设立一个监视器,判断出牌是否符合规则,并且监视每一位的手牌数

30 #一局结束后,询问是否go on?

31 break

View Code

斗地主的一个大概思路,什么时候有时间来完成

random.shuffle() 将输入列表随机排序

sys 环境配置模块

sys模块用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互,例如与Python解释器交互

1 importsys2 #sys模块中包含了各种所需的配置

3 sys.argv[0] #显示代码所在文件的路径

4 #如结果:['D:/python/workrom/day10/进程process.py']

5 sys.path #返回当前环境配置(文件搜索路径,模块搜索路径)

6 sys.maxsize #所接受的最大int值,以避免数据溢出

7 sys.platform #返回操作系统平台名称 win32 Linux

View Code

sys.stdin.readline() 监听键盘输入,直至回车,类似input

sys.stadout.write('打印值:')  可以用来做进度条 同 print(end=''), 即不换行,在同一行进行多次输出

re 正则模块

re正则模块用于匹配字符串形式文件中的目标字符串,可以进行替换

下面举一个例子来看一看正则的用法

1 importre2

3 deffuhao_chuli(string):4 if '--' instring:5 string = string.replace('--','+')6 if '+-' instring:7 string = string.replace('+-','-')8 if '-+' instring:9 string = string.replace('-+','-')10 returnstring11

12 defjisuan(string):13 '''

14 :param string:格式化后的计算式 ,形式如:A+B,仅含三项,数字+运算符+数字15 :return: 计算结果16 '''

17 #先把运算符取出来

18 pattern = re.compile(r'\d([*+/-])-?\d', re.S)19 fuhao =re.findall(pattern, string)[0]20 pattern1 = re.compile(r'(.*\d)[*+/-](-?\d.*)')21 num =re.findall(pattern1,string)22 num1 =float(num[0][0])23 num2 = float(num[0][1])24 if fuhao == '+':25 jieguo = num1 +num226 elif fuhao == '-':27 jieguo = num1 -num228 elif fuhao == '*':29 jieguo = num1 *num230 elif fuhao == '/':31 if num2 ==0:32 print('分母不可为0')33 jieguo = 'wrong'

34 returnjieguo35 jieguo = num1 /num236 jieguo = round(jieguo,7)37 returnjieguo38 #一直在正则匹配出问题,需要再熟悉

39 def kuohao_jisuan(string):#本来以为已经解决问题,但是在浮点数处遇到问题,不能以string,太麻烦

40 '''

41 该函数将最底层含括号进行运算,思路,先乘除,后加减42 :param string: 内部无括号的计算式,字符形式43 :return: 计算结果44 '''

45 if '*' in string or '/' instring:46 #pattern = re.compile(r'\d+[*/][*/0-9]+',re.S)#'1+2*3*4'

47 #pattern = re.compile(r'\d[*/0-9.]+\d')#换一种匹配规则:加减中间含乘除的匹配项

48 #chen_chu = re.findall(pattern,string)#'2*3*4'

49 ##print(chen_chu)

50 #for ch_ch_one in chen_chu:

51 #print(string)

52 pattern_ch_ch = re.compile(r'[0-9.]+[*/]-?[0-9.]+',re.S)#取出乘除的第一项

53 zu_chen_chu = re.findall(pattern_ch_ch,string)#'2*3'

54 answer =str(jisuan(zu_chen_chu[0]))55 string =string.replace(zu_chen_chu[0],answer)56 returnkuohao_jisuan(string)57 else:58 try:59 string =fuhao_chuli(string)60 float(string)61 returnstring62 except:63 string =fuhao_chuli(string)64 pattern_j_j = re.compile(r'-?[0-9.]+[+-][0-9.]+',re.S)65 zu_jia_jian =re.findall(pattern_j_j,string)66 answer =str(jisuan(zu_jia_jian[0]))67 string =string.replace(zu_jia_jian[0], answer)68 returnkuohao_jisuan(string)69 #print(kuohao_jisuan('-6-2*3/4-4*2'))

70 #主函数,现将最底层括号匹配,然后计算后返回替代

71 defall_jisuan(string):72 string = string.replace(' ','')73 if '(' not in string and ')' not instring:74 string =kuohao_jisuan(string)75 returnstring76 else:77 pattern = re.compile(r'\([^()]+\)', re.S)#括号开始括号结束,中间没有括号

78 base_kh_list =re.findall(pattern,string)79 for base_kh inbase_kh_list:80 base_kh1 = base_kh[1:-1]#base_kh为去除括号的算式

81 kuohao_out =kuohao_jisuan(base_kh1)82 string =string.replace(base_kh,kuohao_out)83 string =fuhao_chuli(string)84 returnall_jisuan(string)85 returnstring86 #替换之后可能出现*- +- -- /-这样的情况,所以这时候就需要处理

87 defstart():88 whileTrue:89 shuru = str(input('q is out\ninput:\n'))90 if shuru == 'q':91 break

92 answer =all_jisuan(shuru)93 if '+' inanswer:94 answer = answer[1:]95 print(answer)96

97 if __name__ == '__main__':98 start()

View Code

上面这个计算器是属于匹配边修改才做出来的,一步步试,其中用到了大量的[]操作

更详细具体看一看http://www.cnblogs.com/dreamer-fish/p/5282679.html

pickle/json 模块

load/loads 读取pickle/json格式,load从文件读取,loads从读取的为内存中的对象

dump/dumps 编码为pickle/json格式,dump为编码写入到文件,dumps为编码到内存中的对象

hashlib 哈希模块

哈希模块用于对对象的加密及确认对象是否被修改

1 importhashlib2

3 a = "a test string".encode() 需要哈希加密的文件需先encode为字节形式4 a.update('add'.encode()) 假如新的需要加密的部分5 print(hashlib.md5(a).hexdigest())6 print(hashlib.sha1(a).hexdigest())7 print(hashlib.sha224(a).hexdigest())8 print(hashlib.sha256(a).hexdigest())9 print(hashlib.sha384(a).hexdigest())10 print(hashlib.sha512(a).hexdigest())

View Code

http://www.atool.org/hash.php有对各种编码的解释

python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;

一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送把用key把消息加密,接收方用key + 消息明文再加密,拿加密后的值 跟 发送者的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了。

importhmac

h= hmac.new(b'天王盖地虎', b'宝塔镇河妖')print h.hexdigest()

View Code

阮一峰对加密这一部分可以去他的博客参照一下

外文参照MD5,sha1,sha256等:https://www.tbs-certificates.co.uk/FAQ/en/sha256.html

MD5,SHA-1,SHA-2,SHA-256,SHA-512,SHA-3,RIPEMD-160 - aTool

python 阮一峰_Python模块整理相关推荐

  1. python 阮一峰_阮一峰:前端框架 React 及 CSS in JS

    作者: 阮一峰 1. 以前,网页开发有一个原则,叫做"关注点分离"(separation of concerns). 它的意思是,各种技术只负责自己的领域,不要混合在一起,形成耦合 ...

  2. python安装rarfile模块_python模块整理7-zipfile模块

    官方文档:http://docs.python.org/library/zipfile.html#module-zipfile 如果考虑到跨平台,要考虑用zip压缩文件 一.压缩 使用zipfile模 ...

  3. python web开发入门_python大佬整理的python web开发从入门到精通学习笔记

    原标题:python大佬整理的python web开发从入门到精通学习笔记 Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通 ...

  4. python ascii函数二进制_python模块介绍- binascii:二进制和ASCII互转以及其他进制转换...

    20.1 binascii:二进制和ASCII互转 作用:二进制和ASCII互相转换. Python版本:1.5及以后版本 binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法. ...

  5. python 苹果李子橙_Python模块知识6:OS、SYS模块

    1.os模块,和系统相关的,比如获取路径.目录.文件夹之类 常用方法: os.getcwd() #获取当前工作目录,即当前Python脚本工作的目录路径 os.rename('oldname','ne ...

  6. python自动生成表格_Python自动整理 Excel 表格

    相信有不少朋友日常工作会用到 Excel 处理各式表格文件,更有甚者可能要花大把时间来做繁琐耗时的表格整理工作.最近有朋友问可否编程来减轻表格整理工作量,今儿我们就通过实例来实现 Python 对表格 ...

  7. python网络协议编辑器_python模块:网络协议和支持

    python模块:网络协议和支持 webbrowser 调用浏览器显示html文件 webbrowser.open('map.html') uuid/hmac/hashlib生成唯一ID 在有些情况下 ...

  8. python加载机制_Python 模块的加载顺序

    基本概念 module 模块, 一个 py 文件或以其他文件形式存在的可被导入的就是一个模块 package 包,包含有 init 文件的文件夹 relative path 相对路径,相对于某个目录的 ...

  9. python怎么定义名称_Python模块的定义,模块的导入,__name__用法实例分析

    本文实例讲述了Python模块的定义,模块的导入,__name__用法.分享给大家供大家参考,具体如下: 相关内容: 什么是模块 模块的导入 模块的导入 自模块的导入 同级目录导入 不同级目录导入 目 ...

最新文章

  1. 说实话你现在有多少存款?清华北大毕业生晒出了自己的收入
  2. 重磅:USNews2021世界大学排行榜出炉!清华首登亚洲第一
  3. rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
  4. oracle ogg00423,ogg实现Oracle到SQL Server 2005的同步
  5. java访问器_ONGN和java字段访问器(get,set)
  6. JavaScript 散集合(HashArray)
  7. Spring集成和Web服务
  8. MySQL——基本配置
  9. SpringCloud的服务注册中心(三) - 进一步了解 Eureka
  10. 操作系统笔记(三)进程管理之管理
  11. EasyUI笔记(六)数据表格
  12. 【迁移学习】算法之TrAdaBoost
  13. GUI版Hex合并和Hex转换工具-HexMergeTool 取代hex2bin命令行工具
  14. Java实现百度贴吧自动签到器
  15. 思科FTP服务器如何传输文件,与FXP配置示例的ASA文件传输
  16. 男人也离不开维生素(转)
  17. 显示器3d测试软件,IPS显示屏/裸眼3D显示原理及3D应用
  18. 【kettle】文件导入数据库乱码
  19. 制作openstack镜像(qcow2格式的win10系统)
  20. 关于取地址运算符以及指针的问题

热门文章

  1. 准备mybatis-spring
  2. 蓝桥杯——说好的进阶之入学考试
  3. 在WPF中自定义你的绘制(二)
  4. C#操作xml SelectNodes,SelectSingleNode总是返回NULL
  5. Arrays.asList 方法注意事项
  6. backup archivelog delete input 与delete all input 区别
  7. 温故而知新:new与override的差异以及virtual方法与abstract方法的区别
  8. [转载] python-numpy如何初始化数组值全为nan
  9. [转载] 消息中间件学习总结(8)——RocketMQ之RocketMQ捐赠给Apache那些鲜为人知的故事
  10. 2018暑期周总结报告(四)