五、模块导入方法及常用模块

模块的导入方法:
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所指向的文件或者目录的最后修改时间
View Code
=======================================================================================================================
二.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]
View Code
=======================================================================================================================
三.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"))
View Code
=======================================================================================================
四.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())
View Code

 

 
 
posted @ 2019-08-09 20:02  Paco_Pig  阅读(821)  评论(0编辑  收藏  举报