python之路-基础篇-常用模块详解


模块介绍

什么是模块?

  • 模块就是一个.py文件,文件名就是这个模块的模块名
  • 这个文件中有写好的n个功能,当我要用其中的某个功能的时候,我只需要使用import方法来引入这个模块就可以使用这个模块中写好的功能,就不需要重复造轮子了

模块的分类:

  1. 内置模块(python自带的比如像os,sys等模块)
  2. 自定义模块,自己写的一些模块
  3. 第三方模块(开源模块)

模块导入:

  1. import module # 导入module模块下面的全部方法
  2. from module . xx . xx import*# 导入module.xx.xx下面的所有模块或方法,不建议这样用
  3. from module . xx . xx import xx # 导入module.xx.xx下面的xx模块或者方法
  4. from module . xx . xx import xx as rename # 当模块名较长的时候可以使用as创建一个比较短的别名,使用这个别名等于使用模块

导入模块其实就是告诉Python解释器去解释那个py文件

  • 导入一个py文件,解释器解释该py文件
  • 导入一个包,解释器解释该包下的 init.py 文件

那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path

  1. import sys
  2. print(sys.path)
  3. # 结果
  4. # ['', 'C:\\Python35\\python35.zip', 'C:\\Python35\\DLLs', 'C:\\Python35\\lib', 'C:\\Python35', 'C:\\Python35\\lib\\site-packages']

如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append(‘路径’) 添加。
通过os模块可以获取各种目录,例如:

  1. import sys import os
  2. pre_path = os.path.abspath('../')
  3. sys.path.append(pre_path)

内置模块

os模块

用于提供系统级别的操作

  1. os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径
  2. os.chdir("dirname")改变当前脚本工作目录;相当于shellcd
  3. os.curdir 返回当前目录:('.')
  4. os.pardir 获取当前目录的父目录字符串名:('..')
  5. os.makedirs('dirname1/dirname2')可生成多层递归目录
  6. os.removedirs('dirname1')若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
  7. os.mkdir('dirname')生成单级目录;相当于shellmkdir dirname
  8. os.rmdir('dirname')删除单级空目录,若目录不为空则无法删除,报错;相当于shellrmdir dirname
  9. os.listdir('dirname')列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
  10. os.remove()删除一个文件
  11. os.rename("oldname","newname")重命名文件/目录
  12. os.stat('path/filename')获取文件/目录信息
  13. os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" os.pathsep 输出用于分割文件路径的字符串
  14. os.name 输出字符串指示当前使用平台。win->'nt';Linux->'posix' os.system("bash command")运行shell命令,直接显示
  15. os.environ 获取系统环境变量
  16. os.path.abspath(path)返回path规范化的绝对路径
  17. os.path.split(path)path分割成目录和文件名二元组返回
  18. os.path.dirname(path)返回path的目录。其实就是os.path.split(path)的第一个元素
  19. os.path.basename(path)返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
  20. os.path.exists(path)如果path存在,返回True;如果path不存在,返回False
  21. os.path.isabs(path)如果path是绝对路径,返回True
  22. os.path.isfile(path)如果path是一个存在的文件,返回True。否则返回False
  23. os.path.isdir(path)如果path是一个存在的目录,则返回True。否则返回False
  24. os.path.join(path1[, path2[,...]])将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
  25. os.path.getatime(path)返回path所指向的文件或者目录的最后存取时间
  26. os.path.getmtime(path)返回path所指向的文件或者目录的最后修改时间

更多介绍请移步至:
python2.x:

python3.x:

sys模块

用于提供对解释器的相关操作

  1. sys.argv 命令行参数List,第一个元素是程序本身路径
  2. sys.exit(n)退出程序,正常退出时exit(0)
  3. sys.version 获取Python解释程序的版本信息
  4. sys.maxint 最大的Int
  5. sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
  6. sys.platform 返回操作系统平台名称
  7. sys.stdout.write('please:')
  8. val = sys.stdin.readline()[:-1]

更多介绍请移步至:
python2.x:

python3.x:

hashlib模块

用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

  • md5 python3.x中已经被废弃掉了,下面是python2.x中的用法
  1. import md5
  2. hash = md5.new()
  3. hash.update('admin')
  4. print hash.hexdigest()
  • sha python3.x中已经被废弃掉了,下面是python2.x中的用法
  1. import sha
  2. hash = sha.new()
  3. hash.update('admin')
  4. print hash.hexdigest()
  • hashlib
  1. import hashlib
  2. # ######## md5 ########
  3. >>> hash = hashlib.md5()
  4. >>> hash.update(b'admin')
  5. >>>print(hash.hexdigest())
  6. 21232f297a57a5a743894a0e4a801fc3
  7. #
  8. # ######## sha1 ########
  9. >>> hash = hashlib.sha1()
  10. >>> hash.update(b'admin')
  11. >>>print(hash.hexdigest())
  12. d033e22ae348aeb5660fc2140aec35850c4da997
  13. #
  14. # ######## sha256 ########
  15. >>> hash = hashlib.sha256()
  16. >>> hash.update(b'admin')
  17. >>>print(hash.hexdigest())
  18. 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
  19. #
  20. # ######## sha384 ########
  21. >>> hash = hashlib.sha384()
  22. >>> hash.update(b'admin')
  23. >>>print(hash.hexdigest())
  24. 9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782
  25. #
  26. # ######## sha512 ########
  27. >>> hash = hashlib.sha512()
  28. >>> hash.update(b'admin')
  29. >>>print(hash.hexdigest())
  30. c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

  1. >>> hash = hashlib.md5(b'9ca694a9')
  2. >>> hash.update(b'admin')
  3. >>>print(hash.hexdigest())
  4. 5b7d7b8f1e92367995f71934e91af779

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

  1. >>>import hmac
  2. >>> h = hmac.new(b'9ca694a9')
  3. >>> h.update(b'admin')
  4. >>>print(h.hexdigest())
  5. ec55417c2e2a58460617157aae3be188

json 和 pickle

用于序列化的两个模块

  • json:各种语言之间做数据交换,主要有字符串,列表,元组,字典
  • pickle:用于python程序与python程序之间的数据交换,属于python的数据类型都可以
    json模块提供了四个功能:dumps、dump、loads、load
    pickle模块提供了四个功能:dumps、dump、loads、load
  1. # pickle,用于python特有的类型 和 python的数据类型间进行转换
  2. import pickle
  3. # pickle.dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
  4. data ={'k1':123,'k2':'Hello'}
  5. p_str = pickle.dumps(data)# 将字典序列化为字符串
  6. # 将数据写入文件
  7. with open('test.txt','wb')as f:
  8. f.write(p_str)
  9. # 从文件中读取数据
  10. with open('test.txt','rb')as f:
  11. for i in f.readlines():
  12. p_dic = pickle.loads(i)
  13. print(p_dic)





posted on 2016-02-22 10:24  奋斗中的码农  阅读(1836)  评论(0)    收藏  举报

导航