五、模块导入方法及常用模块
模块的导入方法:
1)import 模块名
2)from 模块名 import sayhi
from os import system(从OS模块中调用system方法,就可以使用系统命令了)
例:system('df -h')
3)import 模块名 as 新名字
常用模块及方法:
OS(系统模块)
sys(包含Python的系统环境变量等等)
sys.path(查看Python的环境变量路径)
tab(用于命令补全,非系统内置)
实现某功能,且是实现的所有代码的集合
模块有两种存在方式:.py文件,“文件夹”
模块:
1.自己写(自定义)
2.别人写(第三方)
3.python写(内置)
===========================================================
模块的导入:
import sys
from sys import argv
from sys import argv as test
===========================================================
内置模块:
一.os:用于提供系统级别的操作
1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 2 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd 3 os.curdir 返回当前目录: ('.') 4 os.pardir 获取当前目录的父目录字符串名:('..') 5 os.makedirs('dirname1/dirname2') 可生成多层递归目录 6 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 7 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname 8 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname 9 os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 10 os.remove() 删除一个文件 11 os.rename("oldname","newname") 重命名文件/目录 12 os.stat('path/filename') 获取文件/目录信息 13 os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" 14 os.linesep 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n" 15 os.pathsep 输出用于分割文件路径的字符串 16 os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' 17 os.system("bash command") 运行shell命令,直接显示 18 os.environ 获取系统环境变量 19 os.path.abspath(path) 返回path规范化的绝对路径 20 os.path.split(path) 将path分割成目录和文件名二元组返回 21 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 22 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 23 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False 24 os.path.isabs(path) 如果path是绝对路径,返回True 25 os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False 26 os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False 27 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 28 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 29 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
=======================================================================================================================
二.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]
=======================================================================================================================
三.ConfigParser:用于对特定格式(如my.cnf)的配置文件进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。
1 如我们经常用的MySQL的配置文件my.cnf: 2 # 注释1 3 ; 注释2 4 5 [mysqld] 6 user = root 7 port = 3306 8 9 [client] 10 k1 = v1 11 12 ---------------------------------------------------------------- 13 import ConfigParser 14 config = ConfigParser.ConfigParser() 15 config.read('my.cnf') 16 17 # ########## 读 ########## 18 #获取[mysqld],[client]======》得到了['mysqld','client'] 19 #secs = config.sections() 20 #print secs 21 22 #获取[mysqld]下面的key======》得到了['user','port'] 23 #options = config.options('mysqld') 24 #print options 25 26 #获取[mysqld]下面的数据======》得到了[('user','root'),('port','3306')] 27 #item_list = config.items('mysqld') 28 #print item_list 29 30 #获取[mysqld]下面的某一个值======》得到了root 31 #val = config.get('mysqld','user') 32 #获取[mysqld]下面的某一个值======》得到了root 33 #val = config.getint('mysqld','user') 相当于拿到值之后将其转换为int形态,比如你得到的值不是root而是123,默认它是字符串型,这时候你就可以用这条语句 34 35 # ########## 改写 ########## 36 #删除mysqld这个组的数据 37 #sec = config.remove_section('mysqld') =====》这个仅仅是在内存里删除了 38 #config.write(open('mysql.cnf', "w")) =====》这一句才是真正在文件里删除了 39 40 添加mysqld这个组 41 #sec = config.has_section('mysqld') 42 #sec = config.add_section('mysqld') 43 #config.write(open('my.cnf', "w")) 44 45 #更改内容 46 #config.set('mysqld','user',‘rooney’) 47 #config.write(open('my.cnf', "w")) 48 49 #删除某项的值 50 #config.remove_option('mysqld','port') 51 #config.write(open('my.cnf', "w"))
=======================================================================================================
四.hashlib:用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
1 import hashlib 2 3 # ######## md5 ######## 4 hash = hashlib.md5() 5 hash.update('admin'.encode("utf-8")) 6 print (hash.hexdigest()) 7 21232f297a57a5a743894a0e4a801fc3 8 # ######## sha1 ######## 9 hash = hashlib.sha1() 10 hash.update('admin'.encode("utf-8")) 11 print (hash.hexdigest()) 12 d033e22ae348aeb5660fc2140aec35850c4da997 13 # ######## sha256 ######## 14 hash = hashlib.sha256() 15 hash.update('admin'.encode("utf-8")) 16 print (hash.hexdigest()) 17 # ######## sha384 ######## 18 19 hash = hashlib.sha384() 20 hash.update('admin'.encode("utf-8")) 21 print (hash.hexdigest()) 22 9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782 23 # ######## sha512 ######## 24 hash = hashlib.sha512() 25 hash.update('admin'.encode("utf-8")) 26 print (hash.hexdigest()) 27 c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec 28 以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。 29 import hashlib 30 # ######## md5 ######## 31 hash = hashlib.md5('rooney') =====>这个rooney就是自定义的key 32 hash.update('admin'.encode("utf-8")) 33 print (hash.hexdigest()) 34 此外:python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密 35 36 import hmac 37 h = hmac.new('wowowowow') 38 h.update('hellowo') 39 print (h.hexdigest())